Python 如何让matplotlib pyplot生成图表,以特定分辨率查看/输出到.png?
我厌倦了在excel中手动创建图形,因此,我尝试使用Python将.csv数据转换成可行的形式,并使用matplotlib绘制结果,从而使该过程自动化 使用matplotlib并生成它们没有问题,但我无法确定如何设置输出的纵横比/分辨率 具体来说,我试图生成散点图和堆积面积图。我所尝试的一切似乎都会导致以下一个或多个问题:Python 如何让matplotlib pyplot生成图表,以特定分辨率查看/输出到.png?,python,matplotlib,Python,Matplotlib,我厌倦了在excel中手动创建图形,因此,我尝试使用Python将.csv数据转换成可行的形式,并使用matplotlib绘制结果,从而使该过程自动化 使用matplotlib并生成它们没有问题,但我无法确定如何设置输出的纵横比/分辨率 具体来说,我试图生成散点图和堆积面积图。我所尝试的一切似乎都会导致以下一个或多个问题: 狭窄的图形区域(覆盖图例、轴等的小绘图区域) 错误的纵横比 图表区域两侧的大空间(我想要一张非常宽/不太高的图像) 如果有人有一些工作的例子来说明如何实现这个结果,我将非
- 狭窄的图形区域(覆盖图例、轴等的小绘图区域)
- 错误的纵横比
- 图表区域两侧的大空间(我想要一张非常宽/不太高的图像)
figsize
参数设置为函数。例如,这会将图形设置为4英寸宽3英寸高:
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(4,3))
调整间距
为此,有一个名为的函数,允许您更改图形本身的边界区域,为标题、轴和标签留出更多空间。下面是我的一个图表中的一个示例:
plt.gcf().subplots_adjust(bottom=0.15, left=0.13, right=0.95, top=0.96)
您可以使用ax控制纵横比。设置纵横比:
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax=fig.add_subplot(1,1,1)
ax.set_aspect(0.3)
x,y=np.random.random((2,100))
plt.scatter(x,y)
设置纵横比的另一种方法(已经提到)是使用plt.figure
中的figsize
参数:例如fig=plt.figure(figsize=(3,1))
。然而,这两种方法略有不同:一个图形可以包含多个轴figsize
控制整个图形的纵横比,而set\u aspect
控制特定轴的纵横比
接下来,您可以使用bbox\u inches='tight'
从绘图周围修剪未使用的空间:
plt.savefig('/tmp/test.png', bbox_inches='tight')
如果要消除matplotlib自动选择x范围和y范围而产生的多余空白,可以使用ax.set\u xlim
和ax.set\u ylim
手动设置:
ax.set_xlim(0, 1)
ax.set_ylim(0, 1)
对于分辨率,您可以在创建图形时使用dpi(每英寸点数)参数,或在
savefig()函数中使用。对于高质量的图形打印,建议使用dpi=600
或更高的分辨率。但它的图形非常简单/容易!;-)增加DPI的问题在于,它会使用该尺寸缩放所有线条厚度和字体:-/