使用 Matplotlib 更改图形颜色以绘制 Pandas 数据框
Posted
技术标签:
【中文标题】使用 Matplotlib 更改图形颜色以绘制 Pandas 数据框【英文标题】:Changing colors in graph using Matplotlib to plot Pandas dataframe 【发布时间】:2016-01-11 05:53:51 【问题描述】:所以我已经绘制了一个数据框,使用下面的代码看起来很棒。问题是数据框中的多个条目使用和重复了大约 10 种颜色,因此无法将一个数据框条目与其他 20 个条目区分开来。
我认为必须有某种方式来说明“使用 X 配色方案并允许 60 种颜色”,但我不知道何时使用数据框。
dataframe = pd.DataFrame(new_vals)
dataframe.plot(kind='bar',stacked=True,legend=False, ylim=(0,100),title='Taxonomic analysis of samples')
N = 29
ind = np.arange(N)
width = 0.35
plt.xlabel('Sample')
plt.ylabel('Percentage of assembly atrribted to each taxonomic group (%)')
plt.legend(loc="best", bbox_to_anchor=(1.0, 1.00))
plt.xticks(ind+width/2. - 0.2,('B11', 'B2', 'B3', 'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'C10', 'C11', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7', 'C8', 'C9', 'D10', 'D11', 'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9'))
这是我的数据框的示例;
Other actinomyces alcanivorax alkaliphilus bacillus bacteroides candidatus phytoplasma cyanothece enterobacter escherichia ... neisseria paenibacillus porphyromonas prevotella pseudoalteromonas rothia staphylococcus streptococcus streptomyces veillonella
0 26.229808 5.198240 4.694513 0.047974 3.691476 0.792203 2.782495 2.018697 2.180294 0.453228 ... 1.677198 4.944483 0.458910 5.496815 2.910004 0.372430 0.599676 8.276785 1.992817 0.595257
1 24.395006 11.615767 1.995668 0.069200 5.750399 0.921047 1.248692 0.740260 0.967860 1.904479 ... 0.873587 1.316648 0.261579 4.954371 1.348089 2.405995 1.061885 18.200302 1.660959 5.382657
2 22.078940 5.772762 3.107776 0.070983 5.523827 1.428608 1.846615 1.218850 1.542251 1.656823 ... 0.986514 2.414715 0.617899 6.893698 2.014352 0.496304 1.056452 22.272679 1.470803 2.696270
3 33.438669 5.210649 0.043170 0.136277 7.108181 2.148167 0.071589 0.034340 0.073281 2.719497 ... 1.922939 0.111153 3.898990 6.426144 0.045960 4.365727 1.545480 17.170125 0.870670 3.480261
4 20.831026 3.001972 4.746576 0.034374 2.198009 0.677926 3.264413 2.524014 2.720162 0.563074 ... 1.167616 9.110402 0.358742 3.323339 3.180934 0.420669 0.408120 8.948355 1.856454 1.086865
【问题讨论】:
【参考方案1】:IIUC 您可以使用如下函数生成k
colors 的颜色图:
def colormapgenerator(N, cm=None):
base = plt.cm.get_cmap(cm)
color_list = base(np.linspace(0, 1, N))
cm_name = base.name + str(N)
return base.from_list(cm_name, color_list, N)
其中cm
是您想要的cmap
(例如Blues
、Reds
等),N
是您需要的颜色数量。比尝试将以下内容添加到您的dataframe.plot()
:
cmap=colormapgenerator(60, 'Reds')
希望对您有所帮助。
【讨论】:
以上是关于使用 Matplotlib 更改图形颜色以绘制 Pandas 数据框的主要内容,如果未能解决你的问题,请参考以下文章
如何更改 matplotlib - spyder 中的默认绘图颜色? [复制]
Python机器学习(六十七)Matplotlib 图形绘制