我一直在生成看起来像这样的条形图:

请注意,由于某种原因,标签上的垂直间距不均匀; 我不确定这是否与我如何分配刻度或实际放置文本的任何机制有关.相关代码:
height_factor = 40.0
ind = np.linspace(0,len(sorted_totals)*height_factor,num=len(sorted_totals))
width = 0.25
fig = plt.figure(figsize=(15.5, 8.75),dpi=300)
p1 = plt.barh(ind,map(int,sorted_composite[:,0]),color='blue',align='center',height=height_factor)
p1 = plt.barh(ind,map(int,sorted_composite[:,2]),color=(0.75,0.1,0.1),align='center',height=height_factor)
plt.ylabel('# of Picks (blue) + # of Bans (red)')
plt.yticks(ind, sorted_totals[:,0])
plt.subplots_adjust(bottom=0.05, left=0.14,right=0.95,top=0.95)
plt.ylim([ind.min() - height_factor, ind.max() + height_factor])
Run Code Online (Sandbox Code Playgroud)
我的数据存储在sorted_composite中,而ind是我用来放置条形的值(ytick位置).我正在使用linspace来生成均匀间隔的条形图,这只是一种工作,我不确定为什么.
就像 user1127062 所建议的那样,您的代码可能没问题。
如果您不需要绘图具有交互性,请将其另存为 svg
如果你运行:
data = numpy.random.randn(10000)
pylab.hist(data,300)
pylab.savefig(fileName+'.svg',format='svg')
Run Code Online (Sandbox Code Playgroud)
您将在图形窗口中看到像素锯齿(在条形宽度中),但它在 svg 文件中消失了。
如果 svg 与您正在做的事情不兼容,“cairo”后端似乎在保存 png 文件方面做得最好。它们看起来和 svg 的屏幕截图一样好。
您可以通过运行来切换后端。
import matplotlib
# you have to change the backend before importing pylab
matplotlib.use('cairo')
import pylab
Run Code Online (Sandbox Code Playgroud)
raw "cairo" 不支持show(),因此您不能在交互模式下使用它,也不能直接从程序显示绘图。
“GTKCairo”后端具有两全其美的优点,但在默认安装中未启用(至少在我安装的后端中未启用sudo apt-get install matplotlib)
如果你使用的是 Ubuntu,我认为你需要做的就是安装 gtk,并重新编译 matplotlib:
sudo apt-get install git-core python-gtk2-dev
git clone git://github.com/matplotlib/matplotlib.git
cd matplotlib
sudo python setup.py install
Run Code Online (Sandbox Code Playgroud)
您可以通过以下方式检查哪个后端处于活动状态:
matplotlib.get_backend()
Run Code Online (Sandbox Code Playgroud)
您可以通过搜索您的matplotlibrc文件来自动加载您最喜欢的后端,我在以下位置找到了我的文件:
/usr/local/lib/python2.7/dist-packages/matplotlib/mpl-data/matplotlibrc
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2969 次 |
| 最近记录: |