我有一个使用python的stackplot,并希望右边的图例显示正确的颜色顺序 - 即我需要反转它。但是,当您反转它时,它也会反转颜色,这意味着图中的颜色不再与图例中的颜色相对应。
我的代码如下;
import matplotlib.colors as colors
import matplotlib.cm as mplcm
from mpl_toolkits.axes_grid1.inset_locator import zoomed_inset_axes
from mpl_toolkits.axes_grid1.inset_locator import mark_inset
# ZOOM PLOT START AND END
start = 408
end = 518
NUM_COLORS = 10
cm = plt.get_cmap('gist_ncar')
cNorm = colors.Normalize(vmin=0, vmax=NUM_COLORS-1)
scalarMap = mplcm.ScalarMappable(norm=cNorm, cmap=cm)
fig = plt.figure()
ax = fig.add_subplot(111)
# old way:
ax.set_prop_cycle(color=[cm(1.*i/NUM_COLORS) for i in range(NUM_COLORS)])
# new way:
# ax.set_prop_cycle([scalarMap.to_rgba(i) for i in range(NUM_COLORS)])
ax.stackplot(range(0, 672), gen_type_summary[0,range1:range2], baseline="zero", linewidth=0.1)
ax.stackplot(range(0 , 672), gen_type_summary[1:12,range1:range2], baseline="zero", linewidth=0.1)
plt.axis([0,672, -5000,95000])
plt.legend(gen_label[0:11], loc='center left', bbox_to_anchor=(1, 0.5))
plt.xlabel('Hours')
plt.ylabel('Dispatch Level (MW)')
fig.dpi = 1600
fig.set_size_inches(w=16,h=5)
不幸的是,stackoverflow图像上传器并不是为了展示图像。任何帮助非常感谢!
答案 0 :(得分:0)
不幸的是,我没有运行和处理代码所需的数据集。我需要" gen_type_summary"和" gen_type_summary&#34 ;. 但是,我可以建议你存储图例处理和标签,反转它们并在图例中手动指定它们。 像这样的东西
handles, labels = ax.get_legend_handles_labels() #get the handles
ax.legend(reversed(handles), reversed(labels))
在你的情况下,这将是相当简单的
plt.legend(reversed(gen_label[0:11]), loc='center left', bbox_to_anchor=(1, 0.5))