添加Colorbar时,Matplotlib绘图将变为非方形

添加Colorbar时,Matplotlib绘图将变为非方形,matplotlib,colorbar,Matplotlib,Colorbar,这是一个相当具体的要求,但我想知道是否有人能解决这个问题。当打印包含颜色栏时,Matplotlib似乎试图将颜色栏和打印本身压缩到方形边界框中。有没有一种方法可以让绘图本身精确地保持您想要的尺寸(理想的纵横比为1),同时仍然有一个色条?有没有一种聪明的方法可以让你不用猜测和检查 代码如下: plt.figure(figsize=(8,8)) props = dict(boxstyle='round', facecolor='#C0C0C0', alpha=1) plt.hexbin(p_bin

这是一个相当具体的要求,但我想知道是否有人能解决这个问题。当打印包含颜色栏时,Matplotlib似乎试图将颜色栏和打印本身压缩到方形边界框中。有没有一种方法可以让绘图本身精确地保持您想要的尺寸(理想的纵横比为1),同时仍然有一个色条?有没有一种聪明的方法可以让你不用猜测和检查

代码如下:

plt.figure(figsize=(8,8))
props = dict(boxstyle='round', facecolor='#C0C0C0', alpha=1)
plt.hexbin(p_binned[7],q_binned[7],extent=(0,1,0,1),gridsize=50,cmap='bone')
plt.colorbar()
text_content = "{:1.3f} ".format(bins[7]/r200_MediumMass2)
plt.text(0.05, 0.95, text_content + r"$r/r_{200}$", fontsize=16, verticalalignment='top', bbox=props)
plt.xlabel('p')
plt.ylabel('q',rotation='horizontal')
plt.ylim(0,1)
plt.xlim(0,1)
plt.show()

谢谢

您可以强制轴的纵横比为1

ax.set_aspect('equal')
并将图形的大小重新调整为所需的尺寸(以英寸为单位)

你可以用

art.get_window_extent()
要以显示单位显示任何艺术家的大小,您可以使用此功能以编程方式重新调整大小


mpl还应如何在颜色栏中添加其他内容?

最好发布示例代码,以重新生成您的问题。添加的代码再现了我的问题。是否有方法在不创建fig和ax实例的情况下实现相同的结果?(即-我的代码在上面显示的方式)啊-我想出来了:axes().set_aspect('equal')@astromax看看这个答案:你已经创建了
fig
ax
对象,
plt
只是对你隐藏它们。
art.get_window_extent()