我想将生成的绘图图像保存到文件中并编写以下MCVE:
import matplotlib.pyplot as plt
plt.rcParams["axes.facecolor"] = "red"
plt.rcParams["savefig.facecolor"] = "red"
plt.rcParams["savefig.bbox"] = "tight"
plt.rcParams["savefig.pad_inches"] = 0
plt.plot([0, 1], [0, 0], "b-", linewidth="10")
plt.plot([1, 1], [0, 1], "b-", linewidth="10")
plt.plot([1, 0], [1, 1], "b-", linewidth="10")
plt.plot([0, 0], [1, 0], "b-", linewidth="10")
#plt.axis("equal")
#plt.axis("off")
plt.savefig("test.png")
plt.axis("equal")
#plt.axis("off")
#plt.axis("equal")
plt.axis("off")
plt.axis("equal")
plt.axis("off")
我发现了bbox
和pad_inches
。但是,它仍然不完美。轴似乎是隐藏的,而不是完全关闭 - 因此绘图不会居中。另外,我想我甚至需要设置相等比例的轴或矩形不是正方形?
我想要的是
要么
plt.rcParams["savefig.bbox"] = "tight"
自动调整图形周围的填充。这似乎是不受欢迎的。离开并创建一个没有边距的正方形图形(plt.subplots_adjust(0,0,1,1)
)将允许轴占据图中的所有空间。因此,不再需要具体设置方面,但当然对于可能仍然有意义的不同情况。
import matplotlib.pyplot as plt
plt.rcParams["axes.facecolor"] = "red"
plt.rcParams["savefig.facecolor"] = "red"
plt.figure(figsize=(4,4))
plt.subplots_adjust(0,0,1,1)
plt.plot([0, 1, 1, 0,0], [0, 0,1,1,0], "b-", linewidth="10", solid_joinstyle="miter")
#plt.gca().set_aspect("equal",adjustable="box" ) # <- not needed
plt.axis("off")
plt.savefig("test.png")
plt.show()
要获得没有红色边框的数字,可以将数据边距设置为0%(plt.margins(0)
);但是,因为线是半切,所以将其线宽加倍以获得相同的蓝色边框是有意义的。
import matplotlib.pyplot as plt
plt.rcParams["axes.facecolor"] = "red"
plt.rcParams["savefig.facecolor"] = "red"
plt.figure(figsize=(4,4))
plt.subplots_adjust(0,0,1,1)
plt.plot([0, 1, 1, 0,0], [0, 0,1,1,0], "b-", linewidth=20, solid_joinstyle="miter")
#plt.gca().set_aspect("equal",adjustable="box" ) # <- not needed
plt.axis("off")
plt.margins(0.0)
plt.savefig("test.png")
plt.show()
您可以定义方形的图形,并使用tight_layout()
自动压缩填充。
import matplotlib.pyplot as plt
# Creates a figure object of size 6x6 inches
fig = plt.figure(figsize=(6,6))
plt.rcParams["axes.facecolor"] = "red"
plt.rcParams["savefig.facecolor"] = "red"
plt.rcParams["savefig.bbox"] = "tight"
plt.rcParams["savefig.pad_inches"] = 0
plt.plot([0, 1], [0, 0], "b-", linewidth="10")
plt.plot([1, 1], [0, 1], "b-", linewidth="10")
plt.plot([1, 0], [1, 1], "b-", linewidth="10")
plt.plot([0, 0], [1, 0], "b-", linewidth="10")
plt.axis("equal")
plt.axis("off")
fig.tight_layout()
fig.savefig("test.png")