【发布时间】:2017-02-24 00:19:13
【问题描述】:
我正在处理堆积条形图,如您所见,它存在一些问题:
1)如何在表格中的颜色中添加 alpha?我尝试在the_table 中添加alpha=0.75,但它没有做任何事情。
2) 如何增加表格行的高度以适应文本?
3) 如何移动“3/1”栏以使其位于表格列的中心?
4) 如何移动图例以使其位于图形上方的中心?
5) 如何修复图例被截断的问题?
这是我的代码:
import matplotlib.pyplot as plt
import numpy as np
res = (0, 21)
canc = (21, 0)
me = (37, 37)
ee = (4, 4)
sw = (16, 16)
te = (31, 31)
spec = (1, 1)
sys = (2, 2)
lm = (9, 9)
data = [res, canc, me, ee, sw, te, spec, sys, lm]
labels = ['Resolved', 'To be cancelled', 'Mech Eng', 'Elec Eng', 'Software', 'Test Eng', 'Specialty', 'Systems', 'LM Review']
dates = ('2/22', '3/1 (Projected)')
fig, ax = plt.subplots()
index = np.arange(len(dates))
bar_width = 0.25
y_offset = np.array([0.0] * len(dates))
gray = plt.cm.gray(0.5)
yellow = plt.cm.hot(0.9)
green = plt.cm.Greens(0.5)
magenta = plt.cm.RdPu(0.5)
orange = plt.cm.Oranges(0.5)
purple = plt.cm.Purples(0.5)
greenblue = plt.cm.GnBu(0.4)
red = plt.cm.Reds(0.5)
blue = plt.cm.Blues(0.5)
colors = [gray, yellow, green, magenta, orange, purple, greenblue, red, blue]
cell_text = []
for row in range(len(data)):
plt.bar(index, data[row], bar_width, bottom=y_offset, color=colors[row], alpha=0.75, align='center', label=labels[row])
y_offset = y_offset + data[row]
colors = colors[::-1]
data.reverse()
labels.reverse()
the_table = plt.table(cellText=data, rowLabels=labels, rowColours=colors, alpha=0.1, colLabels=dates, loc='bottom', cellLoc='center')
the_table.scale(1, 1.6)
plt.ylabel('Open Items')
plt.subplots_adjust(left=0.2, bottom=0.35)
plt.xticks([])
plt.yticks(np.arange(0, 130, 5))
ax.set_xlim(-0.5, 1.5)
plt.legend()
handles, labels = ax.get_legend_handles_labels()
ax.legend(handles[::-1], labels[::-1], bbox_to_anchor=(1., 1.15), ncol=4)
plt.show()
编辑:找到:
#2 & #3 的解决方案。
#1 的解决方法,但仍希望能够实际应用 alpha 而不是操纵颜色。
得到了我想要的图例,但现在它被切断了。
【问题讨论】:
标签: python matplotlib