【发布时间】:2015-01-29 13:05:40
【问题描述】:
我有一个 csv 文件,其中包含大约 125 行和两列 - 用户名和表数。我正在尝试使用 matplotlib 从这些数据创建水平条形图。我的目标是将条形图导出为 pdf 文件。问题是我无法在 pdf 文件中缩放我的图表,以便它实际上可以理解。
到目前为止,这是我的代码(其中值是包含表/用户数量的数组,标签是包含相应用户名的数组):
positions = np.arange(len(values)) + 0.5
plt.figure(num=None, figsize=(8, 6))
plt.barh(positions, values, align='center', color=colors)
plt.yticks(positions, labels)
plt.tick_params(axis='y', labelsize=8)
plt.xlabel('Nombre tables')
plt.title('Utilisateur')
plt.grid(True)
plt.savefig('foo.pdf', papertype='a2')
这是我使用上述代码得到的结果:
我故意水平创建图表,以便可以在我的 pdf 中拆分多个页面,但我似乎无法使其工作。整个图像在一个页面中呈现,因此变得不可读。任何帮助将不胜感激。
一个可复制粘贴的例子:
values=np.random.randint(0,100,(125,))
labels=[str(x) for x in values]
positions = np.arange(len(values)) + 0.5
plt.figure(num=None, figsize=(8, 6))
plt.barh(positions, values, align='center')
plt.yticks(positions, labels)
plt.tick_params(axis='y', labelsize=8)
plt.xlabel('Nombre tables')
plt.title('Utilisateur')
plt.grid(True)
plt.savefig('foo.pdf', papertype='a2')
【问题讨论】:
-
你想达到什么目的?你想要几个条形图,每个都包含一些数据,比如一个图上的前 20 个条形图等等?
-
试试这个
plt.figure(figsize=(23.39, 16.53)并检查 -
TheBigH 所说的 :-) 对条形进行排序也可以提高可读性/功能性。
-
TheBigH,我实际上是在尝试将整个条形图放入一个 A4 页面(我认为应该足够可读)。但是,我开始意识到其他度量会更具代表性(例如高斯分布、最小值、最大值、平均值)。 Kirubaharan,它实际上在我的 pdf 文件中创建了一张不重叠的图片(现在必须将其放大到 200% 才能很好地阅读),所以这很棒。你能告诉我你是怎么得出这些价值观的吗? Jan Kuiken - 对条形图进行排序,然后只显示第一个/最后一个 k 条目也是一个好主意。谢谢大家的回答:-)
标签: python pdf matplotlib charts