我有以下Python代码,我用它来绘制填充等高线图:
def plot_polar_contour(values, azimuths, zeniths):
theta = np.radians(azimuths)
zeniths = np.array(zeniths)
values = np.array(values)
values = values.reshape(len(azimuths), len(zeniths))
r, theta = np.meshgrid(zeniths, np.radians(azimuths))
fig, ax = subplots(subplot_kw=dict(projection='polar'))
ax.set_theta_zero_location("N")
ax.set_theta_direction(-1)
cax = ax.contourf(theta, r, values, 30)
autumn()
cb = fig.colorbar(cax)
cb.set_label("Pixel reflectance")
show()
这给了我一个情节:
但是,当我在show()之前添加行ax.plot(0,30,’p’)时,我得到以下内容:
似乎只添加一个点(在原始轴范围内)就会在半径轴上拧紧轴范围.
这是设计,还是这个bug?你有什么建议去修理它?我是否需要手动调整轴范围,或者是否有办法停止额外的绘图命令?
解决方法:
如果未明确指定轴自动缩放模式,则绘图将使用“松散”自动缩放,而contourf将使用“紧密”自动缩放.
非极轴也会发生同样的事情.例如.
import matplotlib.pyplot as plt
import numpy as np
plt.imshow(np.random.random((10,10)))
plt.plot([7], [7], 'ro')
plt.show()
你有很多选择.
>在代码中的某个位置显式调用ax.axis(‘image’)或ax.axis(‘tight’).
>传递scalex = False和scaley = False作为绘图的关键字参数.
>手动设置轴限制.
最简单,最易读的只是显式调用ax.axis(‘tight’),i.m.o.
标签:python,matplotlib,plot
来源: https://codeday.me/bug/20190621/1250990.html