Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何用Python中的给定数据绘制对数图?_Python_Plot - Fatal编程技术网

如何用Python中的给定数据绘制对数图?

如何用Python中的给定数据绘制对数图?,python,plot,Python,Plot,嗯,我真的不知道如何恰当地问这个问题,但问题是。我有一些代码为我生成数据。从0.1到2017年,我有100个雷诺数,在每个雷诺数下,10.000单元的剪切应力值。所以我希望x轴上的雷诺数和y轴上的剪切应力(从0.001到10)都是对数标度,这10.000个元素将是图表上的点。所以我在图上总共有10万个点 在该代码中,我为每个雷诺数生成0.1到2017的Re和10个单元的剪切应力值。所以在x轴上0.1,我需要有10个点。所以我找了一下,但没找到。那我怎么做呢 n=np.随机.正常(平均值,标准差,

嗯,我真的不知道如何恰当地问这个问题,但问题是。我有一些代码为我生成数据。从0.1到2017年,我有100个雷诺数,在每个雷诺数下,10.000单元的剪切应力值。所以我希望x轴上的雷诺数和y轴上的剪切应力(从0.001到10)都是对数标度,这10.000个元素将是图表上的点。所以我在图上总共有10万个点

在该代码中,我为每个雷诺数生成0.1到2017的Re和10个单元的剪切应力值。所以在x轴上0.1,我需要有10个点。所以我找了一下,但没找到。那我怎么做呢

n=np.随机.正常(平均值,标准差,100)
对于范围(0,105)内的i:
Re=0.1*(1.1**i)
B=e**(-0.08*Re)*(2.5*np.log(Re)+5.25)+8.5*(1-e**(-0.08*Re))
C=0.8+0.9*((e**(-0.08*Re)/(Re**2))+((1-e**(-0.08*Re))/(B**2))**(-0.5)
F=0.31*Re*e**(-0.1*Re)+1.8*e**(-0.88*d50/D)*(1-e**(-0.1*Re))
A=F/C
对于范围(10)内的j:
Dcbss=0.52*数学tan(fi)/((1+(abs(n[j])*A))**2)*(1+(1/2.5)*((abs(n[j])*F)**2)*数学tan(fi)))
使用一个。对于每个雷诺数,有n个应力值。散点图需要与y值一样多的x值,因此必须创建与y值长度相同的x值序列

x = [1,1,1,1]
y = [1,2,3,4]
如果有多组x/y数据,可以像这样手动绘制

x = [1,1,1,1]
y = [1,2,3,4]
plt.scatter(x,y)

x = [2,2,2,2]
y = [1.1,2.1,3.1,4.1]
plt.scatter(x,y)

plt.show()
plt.close()
对于您的情况,您希望在内部循环中累积x和y值,并在内部循环终止时绘制它们

from matplotlib import pyplot as plt
for i in range(0, 105):
    x = []
    y = []
    Re = 0.1 * (1.1**i)  
    B = e ** (-0.08 * Re) * (2.5 * np.log(Re) + 5.25) + 8.5 * (1 - e ** (-0.08 * Re))  
    C = 0.8+0.9*((e**(-0.08*Re)/(Re**2))+((1-e**(-0.08*Re))/(B**2)))**(-0.5)  
    F = 0.31*Re*e**(-0.1*Re)+1.8*e**(-0.88*d50/D)*(1-e**(-0.1*Re)) 
    A = F/C   
    for j in range(10):
        Dcbss = 0.52*math.tan(fi) / (((1 + (abs(n[j])*A))**2)*(1+(1/2.5)*((abs(n[j])*F)**2)*math.tan(fi)))
        x.append(i)
        y.append(Dcbss)
    plt.scatter(x,y)
plt.show()
plt.close()

从文档中:
对于标记大小或颜色不变的散点图,绘图功能将更快。
。如果是这种情况,只需使用.plot()并指定标记形状-
plt.plot(x,y,'ro')
而不是
plt.scatter(x,y)



使用一个。对于每个雷诺数,有n个应力值。散点图需要与y值一样多的x值,因此必须创建与y值长度相同的x值序列

x = [1,1,1,1]
y = [1,2,3,4]
如果有多组x/y数据,可以像这样手动绘制

x = [1,1,1,1]
y = [1,2,3,4]
plt.scatter(x,y)

x = [2,2,2,2]
y = [1.1,2.1,3.1,4.1]
plt.scatter(x,y)

plt.show()
plt.close()
对于您的情况,您希望在内部循环中累积x和y值,并在内部循环终止时绘制它们

from matplotlib import pyplot as plt
for i in range(0, 105):
    x = []
    y = []
    Re = 0.1 * (1.1**i)  
    B = e ** (-0.08 * Re) * (2.5 * np.log(Re) + 5.25) + 8.5 * (1 - e ** (-0.08 * Re))  
    C = 0.8+0.9*((e**(-0.08*Re)/(Re**2))+((1-e**(-0.08*Re))/(B**2)))**(-0.5)  
    F = 0.31*Re*e**(-0.1*Re)+1.8*e**(-0.88*d50/D)*(1-e**(-0.1*Re)) 
    A = F/C   
    for j in range(10):
        Dcbss = 0.52*math.tan(fi) / (((1 + (abs(n[j])*A))**2)*(1+(1/2.5)*((abs(n[j])*F)**2)*math.tan(fi)))
        x.append(i)
        y.append(Dcbss)
    plt.scatter(x,y)
plt.show()
plt.close()

从文档中:
对于标记大小或颜色不变的散点图,绘图功能将更快。
。如果是这种情况,只需使用.plot()并指定标记形状-
plt.plot(x,y,'ro')
而不是
plt.scatter(x,y)




您正在使用变量
mean
sd
来创建一些数据。你能在你的例子中包含一些合适的值吗?你看过了吗?你只需要知道如何创建一个@wwii吗?在这个问题上,它们并不那么重要。平均值为0,标准差为1。我想不清楚你问的是什么。您是否只需要知道如何绘制数据?每x值10个y值?有点。我只是不知道这些数据会如何匹配。当我看这些例子时,他们是分开写的。但是在本文中,我不能单独编写它们,因为它们是随机的,而且太多了。您正在使用变量
mean
sd
来创建一些数据。你能在你的例子中包含一些合适的值吗?你看过了吗?你只需要知道如何创建一个@wwii吗?在这个问题上,它们并不那么重要。平均值为0,标准差为1。我想不清楚你问的是什么。您是否只需要知道如何绘制数据?每x值10个y值?有点。我只是不知道这些数据会如何匹配。当我看这些例子时,他们是分开写的。但在这篇文章中,我不能把它们分开写,因为它们是随机的,而且太多了。