我有一个带有aproximatey 125行和两列的csv文件 - 用户名和表数。我正在尝试使用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')
答案 0 :(得分:0)
下面的例子使用Kirubaharan J的想法为figsize设置一个bigget值。只有垂直网格。水平网格似乎没有任何优势。
from matplotlib import pyplot as plt
import numpy as np
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=(24, 17))
plt.barh(positions, values, align='center')
plt.yticks(positions, labels)
plt.tick_params(axis='y', labelsize=8)
plt.xlabel('Nombre tables')
plt.title('Utilisateur')
ax = plt.axes()
ax.xaxis.grid(True)
plt.savefig('foo.pdf', papertype='a2')