微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Matplotlib 为什么颜色条 y 标签会随着多个颜色条消失

如何解决Matplotlib 为什么颜色条 y 标签会随着多个颜色条消失

当我添加第二个颜色条时,为什么我的颜色条标签“y1”消失了?

如果我删除 ax2 的颜色条,则标签显示在第一个颜色条上。

使用 Python 3.8

独立代码

import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
import matplotlib.colors as mcolors
%matplotlib inline 
plt.style.use('seaborn-whitegrid')
    
x = [-15000,-2000,5000,6000,11000,18000,21000,25000,36000,62000]
beta = [1000,200,-800,100,1000,-5000,-15000,-21000,-1500]
y = [0.01,0.2,1.3,0.35,0.88,2.2,2.5,1.25,3.4,4.1,2.1]

fig = plt.figure(figsize=(10,7.5),constrained_layout=True)
gs = fig.add_gridspec(2,1)
ax1 = fig.add_subplot(gs[0,0])
ax2 = fig.add_subplot(gs[1,0],sharex = ax1)
fig.execute_constrained_layout()
fig.suptitle('Suptitle')


vals = ax1.scatter(x,beta,c=y,norm=mcolors.Lognorm(),cmap='rainbow')
ax1.set_title('ax1',style='italic');
cbax1=ax1.inset_axes([1.1,0.03,1],transform=ax1.transAxes)
cbar1=fig.colorbar(vals,cax=cbax1,format = '%1.2g',orientation='vertical')
cbar1.ax.set_ylabel('y1')
cbar1.ax.yaxis.set_label_position('left')

ax2.scatter(x,y,cmap='rainbow')
ax2.set_title('ax2',style='italic');
vals2 = vals
cbax2 = ax2.inset_axes([1.1,transform=ax2.transAxes)
cbar2 = fig.colorbar(vals2,cax=cbax2,orientation='vertical')
cbar2.ax.set_ylabel('y2')
cbar2.ax.yaxis.set_label_position('left')

enter image description here

解决方法

在您的代码中进行了两次更正。我也在使用 Python 3.8

# ---> Assign the second scatter plot to vals2
vals2 = ax2.scatter(x,y,c=y,norm=mcolors.LogNorm(),cmap='rainbow')
ax2.set_title('ax2',style='italic');
# ---> comment below line.
#vals2 = vals

结果:

Resulting plots

此外,您可以像这样为 colorbar() 函数添加标签:

cbar1=fig.colorbar(vals,cax=cbax1,format = '%1.2g',orientation='vertical',label='y1')
cbar2 = fig.colorbar(vals2,cax=cbax2,label='y2')

如果您仍然遇到此问题,请尝试重新启动内核。

,

这可能是一个错误。您可以在绘图后设置标签:

# Your other codes

# also can use `cbax1` instead of `cbar1.ax`
cbar2.ax.set_ylabel('y2')
cbar2.ax.yaxis.set_label_position('left')

cbar1.ax.set_ylabel('y1')
cbar1.ax.yaxis.set_label_position('left')

输出:

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?