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

3

我想要制作一个散点图,它具有两个不同的y轴和一个颜色条。

以下是伪代码:

#!/usr/bin/python

import matplotlib.pyplot as plt
from matplotlib import cm

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

cbar = plt.colorbar()
cbar.set_label('Blaze Efficiency')

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

plt.show()

它生成了以下这个图: plot

我的问题是,如何为“波长”轴使用不同的刻度,以及如何将色条向右移动,使其不挡住波长?

2个回答

5
@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()

这里展示的是现在的样子:输入图片描述

2
"plt.colorbar() 适用于非常简单的情况,例如不太适合具有2个 y 轴的图。为了对颜色条位置和属性进行精细控制,您几乎总是应该通过指定要在哪些轴上绘制颜色条来使用 colorbar。"
# 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接受以下关键字参数:
关键字参数:
- cax:None | 用于绘制颜色条的轴对象 - ax:None | 从中窃取空间以放置新的颜色条轴的父轴对象
您还可以在此处查看我更详细的回答figure colorbar on separate axes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接