具有多个 y 轴的 Matplotlib 图显示但不保存

Matplotlib graph with multiple y axis shows and doesn't save

我正在绘制一个 3 y 轴的图表,它显示在 Spyder 的绘图 window 中,而不是正确保存在文件夹中。保存在文件夹中的图形是空白的。 这是我的代码:

fig, ax1 = plt.subplots()
ax2 = ax1.twinx()
ax3 = ax1.twinx()
plt.figure(figsize = (121, 75))

ax1.set_xlabel('time(s)')
ax1.set_ylabel('y1')
ax2.set_ylabel('y2')
ax3.set_ylabel('y3')
rspine = ax3.spines['right']
rspine.set_position(('axes', 1.15))
plt.xticks(fontsize=50)
plt.yticks(fontsize=50)
ax1.plot(fd[fd.columns[0]], fd[fd.columns[1]], color = 'r', linewidth = 2)
ax2.plot(fd[fd.columns[0]], fd[fd.columns[2]], color = 'g', linewidth = 2)
ax3.plot(fd[fd.columns[0]], fd[fd.columns[3]], color = 'b', linewidth = 2)
ax3.legend([ax1.get_lines()[0], ax2.get_lines()[0], ax3.get_lines()[0]], ['y1', 'y2', 'y3'])
plt.savefig(folder+"/"+str(file_name)+"y1/2/3.png")
plt.close()

我是不是做错了什么?我没有调用 show() 函数,所以我不明白为什么图表仍然显示(当仅使用 plt.figure()plt.plot() 然后 [ 在同一图表上绘制 3 y 轴时 plt.save()close(),它按预期工作)

编辑:我想要的是将图表以我在 plt.figure() 中设置的大小正确保存在我的文件夹中,但现在情况并非如此。

您可以在保存图之前使用set_size_inchesdpi 功能也可用于增加图形的分辨率。

import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.size'] = '50'

fig = plt.figure(figsize=(121, 75), dpi=200)
fig, ax1 = plt.subplots()
ax2 = ax1.twinx()
ax3 = ax1.twinx()
ax1.set_xlabel('time(s)')
ax1.set_ylabel('y1')
ax2.set_ylabel('y2')
ax3.set_ylabel('y3')
rspine = ax3.spines['right']
rspine.set_position(('axes', 1.05))
rspine2 = ax2.spines['right']
rspine2.set_position(('axes', 1.0))
# plt.xticks(fontsize=50)
# plt.yticks(fontsize=50)
ax1.plot(np.arange(100), np.random.rand(100), color='r', linewidth=2)
ax2.plot(np.arange(100), np.random.rand(100), color='g', linewidth=2)
ax3.plot(np.arange(100), np.random.rand(100), color='b', linewidth=2)
ax3.legend([ax1.get_lines()[0], ax2.get_lines()[0], ax3.get_lines()[0]], ['y1', 'y2', 'y3'])
# fig.tight_layout()
figure = plt.gcf()
figure.set_size_inches(121, 75)
plt.savefig("3.png", dpi=None)
plt.close()

我发现出了什么问题: 我不写作 fig = plt.figure(figsize=(121, 75)) fig, ax1 = plt.subplots(), 我不得不写 fig, ax1 = plt.subplots(figsize=(121, 75)) 然后图表以指定的大小绘制,并且不会显示在 Spyder 的 window 中。