簡體   English   中英

如何將顏色條放入 matplotlib 圖例中

[英]How to put a colorbar into a matplotlib legend

我有產生這個數字的代碼: 在此處輸入圖像描述

在此圖中,顏色表示每條線下端的水平偏移量。 我希望在圖例中出現一個顏色條(帶有“開始”和“停止”),以顯示顏色的含義。

這是我的代碼:

import matplotlib.pyplot as plt
import matplotlib.colors as colors
import matplotlib.cm as cmx


plt.clf()
plt.plot([0,100], [0,100], '--', linewidth=3, color='k', label = 'start')
plt.plot([100,100],[0,100], '-.', linewidth=3, color = 'k', label = 'stop')



jet = plt.get_cmap('jet') 
cNorm  = colors.Normalize(vmin=0, vmax=99)
scalarMap = cmx.ScalarMappable(norm=cNorm, cmap=jet)

for offset in range(1,100):
    colorVal = scalarMap.to_rgba(offset)
    plt.plot([offset, 100], [0,100], color=colorVal)

plt.legend()
plt.show()

所以理想情況下,我會有一些看起來像標准顏色條的東西,范圍從 0 到 100,但出現在帶有標簽'offset'的圖例中。

下面是一些基於 ImportanceOfBeingErnest 的注釋方法 (2) 來完成此操作的代碼。

import matplotlib.pyplot as plt
import matplotlib.colors as colors
import matplotlib.cm as cmx
from matplotlib.patches import Rectangle

fig, ax = plt.subplots(1)

plt.clf()
plt.plot([0,100], [0,100], '--', linewidth=3, color='k', label = 'start')
plt.plot([100,100],[0,100], '-.', linewidth=3, color = 'k', label = 'stop')

jet = plt.get_cmap('jet')
cNorm  = colors.Normalize(vmin=0, vmax=99)
scalarMap = cmx.ScalarMappable(norm=cNorm, cmap=jet)
scalarMap.set_array([])

for offset in range(1,100):
    colorVal = scalarMap.to_rgba(offset)
    plt.plot([offset, 100], [0,100], color=colorVal)

plt.gca().add_patch(Rectangle((0.1, 45), 40, 55, edgecolor='gray',
                                            linewidth=3, fill=False))
plt.gca().text(25, 90, "-- start")
plt.gca().text(25, 80, "-. stop")
plt.gca().text(15, 50, "  offset")

cax = fig.add_axes([0.18, 0.48, 0.03, 0.35])

plt.colorbar(scalarMap, cax = cax, ticks=[range(0, 100, 10)],
                                            orientation='vertical')

plt.show()

截屏

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM