首页 > 解决方案 > 如何获得单个颜色条?

问题描述

在每个 for 循环的以下代码中,我得到一个颜色条。但我想用一个颜色条表示以下数据。

`import numpy as np
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
fig = plt.figure()
ax= fig.add_subplot(111)
h_1 = np.load("./Result_2D/disorder.npy")
h = h_1[0:2]
print("h: ",h)
for k in range(len(h)):
    h_val = round(h[k],1)
    KL=np.load("./KL_%s.npy"%h_val)
    print("KL: ",KL[0:5])
    E = np.load("./E_%s.npy"%h_val)
    print("E_shape: ",E[0:5])
    W =np.load("./W_%s.npy"%h_val)
    print("W: ",W[0:5])
    sc= ax.scatter(E,W,c=KL,cmap='RdBu_r')
    plt.colorbar(sc)`

在此处输入图像描述

标签: pythonmatplotlib

解决方案


这是一些关于如何使用相同的单个颜色条打印多个散点集的示例代码

pltrange = np.logspace(1, 2, num=20) #or use np.linspace, or provide a range of values (based on the limits of your data)
lbrange = pltrange[::2] #labels for colorbar

ax.scatter(x=stream['Dist'], y=stream['Depth'], s=50,
           c=stream['Sand Concentration (mg/l)'],
           cmap='rainbow', edgecolor='k', linewidths=1,
           vmin=pltrange[0],vmax=pltrange[-1]) #note the vmin and vmax, do this for all scatter sets

cb = fig.colorbar(ax=ax, ticks=lbrange, pad=0.01) #display colorbar, keep outside loop
cb.ax.set_yticklabels(['{:.1f}'.format(i) for i in lbrange]) #format labels if desired

我意识到它的格式并不完全适合您的代码,但是..它的原理完全相同,我是从床上发布的:)所以我认为您可以进行必要的调整


推荐阅读