在Matplotlib中设置图表的真实尺寸

在Matplotlib中设置图表的真实尺寸,matplotlib,bar-chart,dpi,savefig,inches,Matplotlib,Bar Chart,Dpi,Savefig,Inches,我需要精确设置图表的尺寸。我尝试了这个,但是结果不是我期望的(如果我设置了px和cm)。在上瘾中,我想知道如何正确导出图像。谢谢你的帮助 import numpy as np plt.rcParams['figure.dpi']=100 # create data x = ['A', 'B', 'C', 'D'] y1 = np.array([10, 20, 10, 30]) y2 = np.array([20, 25, 15, 25]) y3 = np.array([12, 15, 1

我需要精确设置图表的尺寸。我尝试了这个,但是结果不是我期望的(如果我设置了px和cm)。在上瘾中,我想知道如何正确导出图像。谢谢你的帮助

import numpy as np

plt.rcParams['figure.dpi']=100
  
# create data
x = ['A', 'B', 'C', 'D']
y1 = np.array([10, 20, 10, 30])
y2 = np.array([20, 25, 15, 25])
y3 = np.array([12, 15, 19, 6])
y4 = np.array([10, 29, 13, 19])
  
# plot bars in stack manner
cm = 1/2.54  # centimeters in inches
px = 1/plt.rcParams['figure.dpi']  # pixel in inches

plt.figure(figsize=(800*px,1000*px))

plt.bar(x, y1, color='r')
plt.bar(x, y2, bottom=y1, color='b')
plt.bar(x, y3, bottom=y1+y2, color='y')
plt.bar(x, y4, bottom=y1+y2+y3, color='g')
plt.xlabel("Teams")
plt.ylabel("Score")
plt.legend(["Round 1", "Round 2", "Round 3", "Round 4"])
plt.title("Scores by Teams in 4 Rounds")
plt.show()
预期尺寸:800px 1000 px,dpi=100 我在此附上从Photoshop导出的图像截图

图形构造函数接受默认为80 dpi的元组(以英寸为单位的数字)。您需要传递一个dpi参数来更改此设置

从matplotlib.figure导入图形
图=图(图尺寸=(5,4),dpi=80)
以上是80dpi时的5英寸乘4英寸,即400px乘320px

如果你想要800乘1000,你可以这样做

fig=图(figsize=(8,10),dpi=100)
导出图像非常简单

fig.savefig(“MatPlotLib_Graph.png”,dpi=100)

您好,谢谢,但它仍然不起作用。。。大小为690x838 px确切地说,您如何保存您的数字,从哪个后端,以及您是否使用自定义rcParams?你所说的尺寸甚至没有正确的8:10纵横比,所以你在做一些奇怪的事情,我最好的猜测是你正在调用
savefig(fname,bbox\u inches='tight')
我发布了我写的所有代码。考虑到我是初学者,所以我可能做错了什么。我想说得更清楚一点:我需要编写一个代码,让我可以用我想要的尺寸(以像素为单位)导出图表。你是如何保存你后来检查过的png的?我只通过右键单击图表并选择“将图像另存为”来保存它。。。我也尝试过使用plt.savefig(fname,bbox_inches='tight'),但仍然不起作用。请使用plt.savefig(fname,dpi=100)。右键点击图片(我想是在某种笔记本中吧?)不会给你一个好的图片。