我在条形图中遇到了一些问题,我正试图在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 http://28.media.tumblr.com/tumblr_ltk9v6xShD1r5te58o1_500.png
基本上我的主要问题是这些值是用科学记数法的小数。如果可能的话,我想以百万美元呈现它们。此外,我不知道如何制作它,所以类型不会在底部被切断。谢谢你的帮助!
答案 0 :(得分:4)
首先,我会使用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)
以下评论:
tight_layout
功能自动执行此操作。另一种方法是根据here所示的所有轴标签的边界框自行计算所需的尺寸,但是您需要一个渲染器才能确定所有标签的尺寸。sci
或plain
),您可以更改值的呈现。使用plain
时,它只会按原样呈现值。有关详细信息,请参阅此功能的docs。请注意,您还可以使用set_yticklabels
函数的text
参数来进一步控制格式(当然,该函数也适用于x轴。