如何用Python中的给定数据绘制对数图?
嗯,我真的不知道如何恰当地问这个问题,但问题是。我有一些代码为我生成数据。从0.1到2017年,我有100个雷诺数,在每个雷诺数下,10.000单元的剪切应力值。所以我希望x轴上的雷诺数和y轴上的剪切应力(从0.001到10)都是对数标度,这10.000个元素将是图表上的点。所以我在图上总共有10万个点 在该代码中,我为每个雷诺数生成0.1到2017的Re和10个单元的剪切应力值。所以在x轴上0.1,我需要有10个点。所以我找了一下,但没找到。那我怎么做呢如何用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.随机.正常(平均值,标准差,
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值?有点。我只是不知道这些数据会如何匹配。当我看这些例子时,他们是分开写的。但在这篇文章中,我不能把它们分开写,因为它们是随机的,而且太多了。