在Python中创建条形图

2024-04-25 08:11:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用python创建的条形图有几个问题。我的图表代码如下所示:

import matplotlib
matplotlib.use('Agg')
from pylab import *
import calendar

def webshow(img):
    savefig(img,dpi=500)
    print 'Content-Type: text/html\n'
    print '<img width="800" height="400" src="'+img+'" />'

genres = []
n = 0
for c in sorted_list: 
    genres.append(sorted_list[n][0])
    n += 1

grosses = []
a = 0
for c in sorted_list:
    grosses.append(sorted_list[a][1])
    a += 1

clf()
bar(arange(len(grosses)),grosses)
xticks( arange(len(genres)),genres, rotation=80)
webshow("barchart.png")

我的图表如下:

a busy cat
(来源:tumblr.com

基本上,我的主要问题是,这些值是用科学符号表示的小数。如果可能的话,我想把它们以百万的形式呈现出来。另外,我也不知道如何才能使它的体裁不被切断在底部。谢谢你的帮助!


Tags: inimportimgforlenmatplotlib图表list
1条回答
网友
1楼 · 发布于 2024-04-25 08:11:10

首先,我将使用一个figure对象来工作:这使得根据您的喜好构造图变得更容易。要构造图形,应执行以下操作:

fig = plt.figure()
fig.subplots_adjust(bottom=0.2)          # Remark 1
ax = fig.add_subplot(111)
ax.bar(arange(len(grosses)), grosses)
ax.ticklabel_format(style='plain')       # Remark 2
ax.set_xticks(arange(len(genres)))
ax.set_xticklabels(genres, rotation=80)
savefig('barchart.png', dpi=500)

以及以下评论:

  1. 这将调整图像的大小,在这种情况下,它会放大底部以适应标签。在大多数情况下,你大概知道你要放入的数据,所以这就足够了。如果您使用的是matplotlib版本1.1或更高版本,则可以使用^{}函数为您自动执行此操作。另一种方法是根据所有轴标签的边界框自己计算所需的大小,如here,但是需要一个渲染器才能确定所有标签的大小。
  2. 通过指定标签格式(使用sciplain),可以更改值的呈现。当使用plain时,它只会按原样呈现值。有关详细信息,请参阅此函数上的docs。注意,还可以使用^{}函数的text参数进一步控制格式(当然,该函数也可用于x轴)。

相关问题 更多 >