如何基于条形图的值在matplotlib中创建自定义图例?

5
据说,我有以下条形图:

Sample BarPlot

例如,第4个工作日是星期三,是否可能创建自定义图例来指示4-星期三?
此外,如果我有星期几,例如3和4。 3代表星期二。如何在仅显示星期3的条形图中添加另一个自定义图例(3-星期二)?
谢谢!
2个回答

1
请添加一个可工作的示例,以便我们了解您想要的确切内容。这些数字来自何处?无论如何,该程序生成附图。也许它会对您有所帮助。

enter image description here

#Barplot

import matplotlib.pyplot as plt
import numpy as np

Day_names=["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
N=7
index = np.arange(N)
bar_width = 0.95
bar_height = [1,1.5,1.2,2,0.5,0.75,1]
bar_color = ['b','r','g','yellow','k', 'magenta', 'orange']
bars = plt.bar(index, bar_height, bar_width,alpha=0.5,color=bar_color)

plt.xlabel('Day')
plt.ylabel('Some Value')
plt.title('Bars')
plt.xticks(index + bar_width/2., Day_names)    

plt.show()

1

我不完全清楚你想要实现什么,但以下可能是一种达成你目标的方式:

import matplotlib.pyplot as plt
daysofweek = {1:('Sunday','r'), 
              2:('Monday','g'), 
              3:('Tuesday','b'), 
              4:('Wednesday','yellow'), 
              5:('Thursday','k'), 
              6:('Friday', 'magenta'), 
              7:('Saturday', 'orange')}
ax1 = plt.subplot(111)

xval = [2., 4., 7.]
yval = [2.5, 3.6, 2.7]

for j in range(len(xval)):
    ax1.bar(xval[j], yval[j], width=0.8, bottom=0.0, align='center', color=daysofweek[xval[j]][1], alpha=0.6, label=daysofweek[xval[j]][0])
ax1.set_xticks(xval)
ax1.set_xticklabels([daysofweek[i][0] for i in xval])
ax1.legend()
plt.show()

结果是: enter image description here

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接