Matplotlib 保存为 pdf 在条形图中未显示影线标记 - 潜在错误?

Posted

技术标签:

【中文标题】Matplotlib 保存为 pdf 在条形图中未显示影线标记 - 潜在错误?【英文标题】:Matplotlib save to pdf not showing hatch marks in bar plot -- potential bug? 【发布时间】:2020-04-16 05:45:52 【问题描述】:

我在 ubuntu 18.04 机器上使用 matplotlib 版本 3.1.1,并在 2 个不同的盒子上在 python 3.6.8 和 3.7.4 中尝试了此代码。

问题是,当有超过 10 个项目时,颜色会重复出现,我做了一个快速更改以制作阴影标记来区分。虽然这在显示中效果很好,但当我保存图(“* .pdf”)时,阴影不会出现。 savefig("*.png") 似乎工作正常,如下图所示。

我在多个地方搜索过这个问题,但似乎找不到有效的解决方案。我也尝试过 PdfPages。

简单的代码和输出附在下面。我很感激任何建议。

代码:

import matplotlib
import matplotlib.pyplot as plt
import pandas as pd

matplotlib.__version__  #3.1.1
df=pd.DataFrame('A':[0.1]*12, 'B':[0.1]*12).T
tit='title'

ax=df.plot.bar(figsize=(11,8.5),stacked=True,title=tit)
nrows=len(df)
bars = ax.patches
hatches=['','-', '+', 'x','/','//','O','o','\\','\\\\']*nrows*10 #times rows*colors
#
hatches.sort()
hatches=hatches[0:len(bars)]
i=0 
for bar in bars:# goes down a column with same color,  then next with diff color and so on.  
    bar.set_hatch(hatches[i])
    #bar.text('1')
    #print(bar)
    i+=1    
ax.legend(#loc='lower center', loc='upper center',bbox_to_anchor=(0.5, -.05,0,0),fancybox=True, shadow=True, ncol=5,fontsize=5.5)

#plt.savefig('barhatch.png')   

plt.savefig('barhatch.pdf')   

实际剧情截图:

screenshot of actual plot

savefig("out.png"):

我似乎无法附上 pdf 的屏幕截图:

【问题讨论】:

【参考方案1】:

尝试使用不同的facecolor 填充空间和edgecolor 填充空间。

我想舱口在那里,但显示的颜色与下面的填充空间相同。我经历过与fill_between 类似的事情,并在GitHub discussion 中找到了解决方案。

【讨论】:

以上是关于Matplotlib 保存为 pdf 在条形图中未显示影线标记 - 潜在错误?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 matplotlib 条形图中增加误差线的粗细?

matplotlib条形图中如何开启科学计数法?

我可以在 matplotlib 条形图中关闭科学记数法吗?

Matplotlib 在一张图中绘制多个条形图

Matplotlib 在一张图中绘制多个条形图

来自 Pandas 数据框的 Matplotlib 中堆积条形图中的标签问题