Python 在matplotlib中绘制多个y轴和颜色条

Python 在matplotlib中绘制多个y轴和颜色条,python,matplotlib,scatter,colorbar,Python,Matplotlib,Scatter,Colorbar,我试图制作一个散点图,它有两个不同的y轴和一个色条 下面是使用的伪代码: #/usr/bin/python 将matplotlib.pyplot作为plt导入 从matplotlib导入cm 图=plt.图() ax1=图add_子批次(111) plt.散射(xgrid, 伊格里德, c=be,#将色条设置为闪耀效率 cmap=厘米热, vmin=0.0, vmax=1.0) cbar=plt.colorbar() cbar.set_标签(“燃烧效率”) ax2=ax1.twinx() ax2

我试图制作一个散点图,它有两个不同的y轴和一个色条

下面是使用的伪代码:

#/usr/bin/python
将matplotlib.pyplot作为plt导入
从matplotlib导入cm
图=plt.图()
ax1=图add_子批次(111)
plt.散射(xgrid,
伊格里德,
c=be,#将色条设置为闪耀效率
cmap=厘米热,
vmin=0.0,
vmax=1.0)
cbar=plt.colorbar()
cbar.set_标签(“燃烧效率”)
ax2=ax1.twinx()
ax2.set_ylabel('波长')
plt.show()
它生成了这个图:

我的问题是,如何为“波长”轴使用不同的比例,以及如何将颜色条向右移动,使其不受波长的影响?

plt.colorbar()是为非常简单的情况而设计的,例如,对于具有两个y轴的绘图,实际上没有考虑到。 对于颜色条位置和属性的细粒度控制,您几乎应该始终使用颜色条来指定要在哪些轴上打印颜色条

# on the figure total in precent l    b      w , height 
cbaxes = fig.add_axes([0.1, 0.1, 0.8, 0.05]) # setup colorbar axes. 
# put the colorbar on new axes
cbar = fig.colorbar(mapable,cax=cbaxes,orientation='horizontal')
请注意,colorbar采用以下关键字:

关键字参数:

卡克斯 无|将绘制颜色条的轴对象 无|父轴对象,新轴从该对象的空间开始 色条轴将被盗


你也可以在这里看到我关于的更详细的回答。

@OZ123很抱歉,我花了这么长时间才回复。Matplotlib具有可扩展的可定制性,有时会让您对实际操作感到困惑。感谢您对创建单独轴的帮助

然而,我并不认为我需要那么多的控制,结果我只是在中使用了PAD关键字参数

fig.colorbar()
这提供了我所需要的

然后,伪代码变为:

下面是它现在的样子:

#!/usr/bin/python

import matplotlib.pyplot as plt
from matplotlib import cm

fig = plt.figure()
ax1 = fig.add_subplot(111)
mappable = ax1.scatter(xgrid,
                       ygrid,
                       c=be,                   # set colorbar to blaze efficiency
                       cmap=cm.hot,
                       vmin=0.0,
                       vmax=1.0)

cbar = fig.colorbar(mappable, pad=0.15)
cbar.set_label('Blaze Efficiency')

ax2 = ax1.twinx()
ax2.set_ylabel('Wavelength')

plt.show()