Python 如何在极坐标图(半圆等高线图)中正确显示颜色条?
我正在用matplotlib中的Pyplot在极坐标图中绘制一个大的温度矩阵(对于一个圆的每个r和θ)。到目前为止,我所做的一切都很顺利:Python 如何在极坐标图(半圆等高线图)中正确显示颜色条?,python,matplotlib,graph,Python,Matplotlib,Graph,我正在用matplotlib中的Pyplot在极坐标图中绘制一个大的温度矩阵(对于一个圆的每个r和θ)。到目前为止,我所做的一切都很顺利: space_theta = radians(linspace(0, 180, M)) space_r = arange(0, a, delta_r) r, theta = meshgrid(space_theta, space_r) fig, axes = plt.subplots(subplot_kw=dict(projection='polar'))
space_theta = radians(linspace(0, 180, M))
space_r = arange(0, a, delta_r)
r, theta = meshgrid(space_theta, space_r)
fig, axes = plt.subplots(subplot_kw=dict(projection='polar'))
axes.contourf(r, theta, T[W-1]) #T[W-1] is the temperatures I want to plot (T is a 3D matrix, so T[W-1] is a matrix)
axes.set_thetamin(0)
axes.set_thetamax(180)
plt.show()
有了这些,我得到了以下结果:
现在我只想添加一个颜色图例,指示哪个颜色对应哪个温度。它应该是这样的(只关注图例):
我在几个网站上搜索过,但没有找到如何做到这一点。每次用于绘制图形的方法都不同。我尝试使用colorbar(),这为每个人解决了问题,但我得到了一个错误(“没有找到可用于创建colorbar的映射”)
注意:如果可能的话,我想在颜色图例上显示最大值和最小值。您可以使用
plt.colorbar
,并将axes.contourf
的结果作为第一个参数。
您会注意到默认的颜色栏太大了。要收缩
它,请使用收缩=.6
使其与轮廓图相似。现在,您会注意到它将太接近绘图。这可以通过pad=0.08
进行调整
请注意,numpy库有许多与其他库名称相似的函数。为了明确您使用的是numpy函数,最好将numpy作为np导入
下面是一个更完整的示例:
从matplotlib导入pyplot作为plt
将numpy作为np导入
M=100
a=1
δr=0.01
空间θ=np弧度(np.linspace(0,180,M))
空间=np.arange(0,a,delta)
T=np.随机.均匀(-30,40,M*len(space_r)).重塑((M,len(space_r)))
r、 θ=np.meshgrid(空间θ,空间r)
图,轴=plt.子批次(子批次_kw=dict(投影=极坐标))
轮廓图=轴。轮廓f(r,θ,T)
轴。设置为(0)
轴。设置最大值(180)
plt.colorbar(轮廓图,收缩=0.6,衬垫=0.08)
plt.show()
您可以使用plt.colorbar
,并将axes.contourf
的结果作为第一个参数。
您会注意到默认的颜色栏太大了。要收缩
它,请使用收缩=.6
使其与轮廓图相似。现在,您会注意到它将太接近绘图。这可以通过pad=0.08
进行调整
请注意,numpy库有许多与其他库名称相似的函数。为了明确您使用的是numpy函数,最好将numpy作为np导入
下面是一个更完整的示例:
从matplotlib导入pyplot作为plt
将numpy作为np导入
M=100
a=1
δr=0.01
空间θ=np弧度(np.linspace(0,180,M))
空间=np.arange(0,a,delta)
T=np.随机.均匀(-30,40,M*len(space_r)).重塑((M,len(space_r)))
r、 θ=np.meshgrid(空间θ,空间r)
图,轴=plt.子批次(子批次_kw=dict(投影=极坐标))
轮廓图=轴。轮廓f(r,θ,T)
轴。设置为(0)
轴。设置最大值(180)
plt.colorbar(轮廓图,收缩=0.6,衬垫=0.08)
plt.show()
来自图库。您应该始终在示例中显示导入内容,以便我们知道弧度
和排列
是什么。您还应该包括您尝试使用.colorbar()
。谢谢!我在理解matplotlib的不同功能是如何工作的方面遇到了一些困难,但现在看来它可以工作了。只是需要调整一下尺寸,但我会没事的。从图库中。您应该始终在示例中显示导入内容,以便我们知道弧度
和排列
是什么。您还应该包括您尝试使用.colorbar()
。谢谢!我在理解matplotlib的不同功能是如何工作的方面遇到了一些困难,但现在看来它可以工作了。只是需要调整一下尺寸,但我会没事的。