【问题标题】:Creating Bar Charts in Python在 Python 中创建条形图
【发布时间】:2011-12-13 20:30:32
【问题描述】:

我尝试在 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")

我的图表如下所示:


(来源:tumblr.com

基本上我的主要问题是这些值是用科学记数法表示的小数。如果可能的话,我想以数百万的形式展示它们。另外,我不知道如何制作,所以流派不会在底部被切断。感谢您的帮助!

【问题讨论】:

    标签: python charts matplotlib bar-chart


    【解决方案1】:

    首先,我会使用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 或更高版本,您可以使用 tight_layout 函数自动为您执行此操作。另一种方法是根据here 所示的所有轴标签的边界框自行计算所需的大小,但您需要一个渲染器才能确定所有标签的大小。
    2. 通过指定标签格式(使用sciplain),您可以更改值的呈现。当使用plain 时,它只会按原样呈现值。有关更多信息,请参阅此功能的 docs。请注意,您还可以使用 set_yticklabels 函数的 text 参数来进一步控制格式(当然该函数也可用于 x 轴。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-18
      • 2014-05-01
      • 2018-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-30
      相关资源
      最近更新 更多