如何在莫尔韦德投影的散点图中添加颜色条?
解决莫尔韦德投影散点图添加颜色条无效的问题
你的代码里有两个关键问题导致颜色条无法正常显示,我来一步步帮你修正:
1. 先修正numpy别名的错误
你导入了numpy as np,但代码里却用了N来调用numpy的方法,这会直接触发报错,先把所有N替换成np。
2. 核心:让颜色条关联散点图的颜色映射
plt.colorbar()或者fig.colorbar()需要明确接收散点图返回的可映射对象(也就是scatter函数的返回值),不然无法识别要关联的颜色数据。
修正后的完整代码
import pylab as plt import numpy as np # 生成随机数据 lll = np.random.uniform(-180, 180, 10000) bbb = np.random.uniform(-90, 90, 10000) amp = np.random.uniform(0, 1, 10000) fig = plt.figure(figsize=(12,9)) ax = fig.add_subplot(111, projection="mollweide") # 把scatter的返回值存起来,用于关联颜色条 scatter_plot = ax.scatter(np.array(lll)*np.pi/180., np.array(bbb)*np.pi/180., c=amp) ax.grid(True) # 添加颜色条,并关联散点图对象 cbar = plt.colorbar(scatter_plot) # 给颜色条添加标签,增强可读性 cbar.set_label('Amplitude', fontsize=12) plt.show()
为什么之前的方法无效?
ax.colorbar()不是matplotlib的正确调用方式,Axes对象没有这个方法,正确的是用fig.colorbar()或者plt.colorbar()。- 直接调用
plt.colorbar()时,如果当前轴有多个可映射对象,matplotlib可能无法自动识别你要关联的是散点图的颜色,所以必须明确传入scatter返回的对象。
这样修改后,你就能看到和散点颜色对应的颜色条了。
内容的提问来源于stack exchange,提问作者AlbertBranson
相关产品推荐
相关产品推荐

