我有一个不同颜色的条形图。我想让一个酒吧脱颖而出,颜色更亮,其他的则褪色。我的猜测是在条形图上使用关键字alpha来淡化它们,但我无法弄清楚如何保持原始颜色(=不使用alpha关键字淡化)。 我需要帮助 这是我的代码:
from matplotlib import pyplot as plt
from itertools import cycle, islice
import pandas as pd, numpy as np
ds2=ds[['Factors', 'contribution']]
ds3=ds2.set_index('Factors')
it = cycle(['b', 'green', 'y', 'pink','orange','cyan','darkgrey'])
my_colors=[next(it) for i in xrange(len(ds))]
figure(1, figsize=(10,8))
# Specify this list of colors as the `color` option to `plot`.
ds3.plot(kind='barh', stacked=True, color=my_colors, alpha=0.95)
plt.title('xxxxxxxxxxxxxx', fontsize = 10)
这是我的简单数据帧ds3
contribution
Factors
A 0.188137
B 0.160208
C 0.160208
D 0.151654
E 0.149489
F 0.135975
G 0.063206
答案 0 :(得分:9)
我认为mgilson的方法是最好的,你可以在Matplotlib命令中添加来自Pandas的数据。但是,您也可以捕获Pandas返回的axes
对象,然后迭代艺术家以修改它们。
这变得非常棘手,因为条形没有标签(“_no_legend_”)作为标识符,目标特定条的唯一方法是在原始{{的索引中查找它的位置1}}。任何改变,比如排序,在绘图和查找之间的顺序都会产生错误的结果!
DataFrame
所以这个例子只给出了Pandas和Matplotlib如何协同工作的一些见解。我不建议实际使用它,并建议采用mgnilson的方法。
答案 1 :(得分:2)
为什么不在单独的绘图命令中绘制特殊条形图?
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
colors = list('rgbkm')
data_y = [1,2,4,5,6]
data_x = [1,1,1,1,1]
ax.barh(data_y, data_x, color=colors, alpha=0.25)
# Plot the special bar separately ...
ax.barh([3], [1], color='b')
plt.show()