Visual studio Matplotlib不';无法在Visual Studio代码中正确显示

Visual studio Matplotlib不';无法在Visual Studio代码中正确显示,visual-studio,matplotlib,visual-studio-code,Visual Studio,Matplotlib,Visual Studio Code,我试图在VisualStudio代码中使用Matplotlib和Pandas创建一个由5个子图组成的绘图,这些子图由简单的线图组成。然而,由于某些原因,即使我将图形设置为非常大,图像也总是看起来非常小并且聚集在一起。我试着用调整子图来修改图形之间的间距,但这并没有改变任何事情 这是我的密码 ax1 = plt.subplot(1, 5, 1) ax1 = plt.plot(returns["MSFT"]) plt.xlabel("Date") plt.yl

我试图在VisualStudio代码中使用Matplotlib和Pandas创建一个由5个子图组成的绘图,这些子图由简单的线图组成。然而,由于某些原因,即使我将图形设置为非常大,图像也总是看起来非常小并且聚集在一起。我试着用调整子图来修改图形之间的间距,但这并没有改变任何事情

这是我的密码

ax1 = plt.subplot(1, 5, 1)
ax1 = plt.plot(returns["MSFT"])
plt.xlabel("Date")
plt.ylabel("Daily MSFT Returns")
plt.title("MSFT Returns Over Time")

ax2 = plt.subplot(1, 5, 2)
ax2 = plt.plot(returns["AMZN"])
plt.xlabel("Date")
plt.ylabel("Daily AMZN Returns")
plt.title("AMZN Returns Over Time")

ax3 = plt.subplot(1, 5, 3)
ax3 = plt.plot(returns["AAPL"])
plt.xlabel("Date")
plt.ylabel("Daily AAPL Returns")
plt.title("AAPL Returns Over Time")

ax4 = plt.subplot(1, 5, 4)
ax4 = plt.plot(returns["GOOG"])
plt.xlabel("Date")
plt.ylabel("Daily GOOG Returns")
plt.title("GOOG Returns Over Time")

ax5 = plt.subplot(1, 5, 5)
ax5 = plt.plot(returns["FB"])
plt.xlabel("Date")
plt.ylabel("Daily FB Returns")
plt.title("FB Returns Over Time")

plt.figure(figsize=(100, 100))
plt.subplots_adjust(wspace = 10)
plt.show()

一些可能有用的建议-first matplotlib具有“紧密布局”功能,可帮助合理设置空白并减少勾号标签的数量。要使用它,只需在
plt.show()之前调用
plt.tight\u layout()

但这并不能解决图形上有大量文本的问题。您可以尝试使用suptitle“随时间的股票收益率”保存文本,并简单地通过子图标题的股票名称引用每个图


如果一个不同风格的情节能做得更好,这也可能值得考虑。如果在同一时间段内,收益率具有相似的大小,将其作为同一轴上的不同颜色线可能更有意义,并用图例显示股票的标识。一些建议可能会有所帮助-first matplotlib具有“紧密布局”功能这有助于明智地设置空白,减少勾号标签的数量。要使用它,只需在
plt.show()之前调用
plt.tight\u layout()

但这并不能解决图形上有大量文本的问题。您可以尝试使用suptitle“随时间的股票收益率”保存文本,并简单地通过子图标题的股票名称引用每个图


如果一个不同风格的情节能做得更好,这也可能值得考虑。如果在同一时间段内,收益率具有相似的大小,将其作为同一轴上的不同颜色线可能更有意义,并带有一个图例,显示股票的标识。

更新:,如前所述,您可以使用循环进一步简化。例如,这里我们将所有子批次轴放在
轴中
,将公司名称放在
名称中
,然后压缩并迭代:

fix,axes=plt.子批次(nrows=1,ncols=5,figsize=(20,5))
名称=['MSFT'、'AMZN'、'AAPL'、'GOOG'、'FB']
对于ax,zip中的名称(轴、名称):
ax.plot(返回[名称])
ax.set_ylabel(f'Daily{name}返回')
set_title(f'{name}随时间返回')

通常,首先使用
figsize
创建子批次轴
ax1
,…,
ax5
更容易。然后在这些预先制作的轴手柄上进行操作,例如
ax1.plot()
而不是
plt.plot()
ax1.setxlabel()
而不是
plt.xlabel()
,等等

#首先创建ax1~ax5
图(ax1,ax2,ax3,ax4,ax5)=plt.子批次(nrows=1,ncols=5,figsize=(20,5))
ax1.plot(返回[“MSFT”])#非plt.plot(…)
ax1.set_xlabel(“日期”)#非plt.xlabel(…)
ax1.set_ylabel(“每日MSFT返回”)#非plt.ylabel(…)
ax1.set_title(“MSFT随时间返回”)#而不是plt.title(…)
ax2.绘图(返回[“AMZN”])
ax2.设置标签(“日期”)
ax2.set_ylabel(“每日AMZN回报”)
ax2.设置标题(“AMZN随时间返回”)
ax3.plot(返回[“AAPL”])
ax3.设置标签(“日期”)
ax3.set_ylabel(“每日AAPL回报”)
ax3.设置标题(“AAPL随时间返回”)
ax4.绘图(返回[“GOOG”])
ax4.设置标签(“日期”)
ax4.设置标签(“每日谷歌回报”)
ax4.set_title(“随时间而返回的GOOG”)
ax5.绘图(返回[“FB”])
ax5.设置标签(“日期”)
ax5.设置标签(“每日FB退货”)
ax5.设置标题(“FB随时间返回”)

更新:如前所述,您可以通过循环进一步简化。例如,这里我们将所有子批次轴放在
轴中
,将公司名称放在
名称中
,然后压缩并迭代:

fix,axes=plt.子批次(nrows=1,ncols=5,figsize=(20,5))
名称=['MSFT'、'AMZN'、'AAPL'、'GOOG'、'FB']
对于ax,zip中的名称(轴、名称):
ax.plot(返回[名称])
ax.set_ylabel(f'Daily{name}返回')
set_title(f'{name}随时间返回')

通常,首先使用
figsize
创建子批次轴
ax1
,…,
ax5
更容易。然后在这些预先制作的轴手柄上进行操作,例如
ax1.plot()
而不是
plt.plot()
ax1.setxlabel()
而不是
plt.xlabel()
,等等

#首先创建ax1~ax5
图(ax1,ax2,ax3,ax4,ax5)=plt.子批次(nrows=1,ncols=5,figsize=(20,5))
ax1.plot(返回[“MSFT”])#非plt.plot(…)
ax1.set_xlabel(“日期”)#非plt.xlabel(…)
ax1.set_ylabel(“每日MSFT返回”)#非plt.ylabel(…)
ax1.set_title(“MSFT随时间返回”)#而不是plt.title(…)
ax2.绘图(返回[“AMZN”])
ax2.设置标签(“日期”)
ax2.set_ylabel(“每日AMZN回报”)
ax2.设置标题(“AMZN随时间返回”)
ax3.plot(返回[“AAPL”])
ax3.设置标签(“日期”)
ax3.set_ylabel(“每日AAPL回报”)
ax3.设置标题(“AAPL随时间返回”)
ax4.绘图(返回[“GOOG”])
ax4.设置标签(“日期”)
ax4.设置标签(“每日谷歌回报”)
ax4.set_title(“随时间而返回的GOOG”)
ax5.绘图(返回[“FB”])
ax5.设置标签(“日期”)
ax5.设置标签(“每日FB退货”)
ax5.设置标题(“FB随时间返回”)

您好,非常感谢您的回复!主要的问题是,图形显示为非常拥挤在一起,出于某种原因,无论我尝试使它多大,它总是保持相同的大小。我想这可能是vistualstudio代码本身的一个设置,但我无法理解。我实际上正在学习如何编码,因此我尝试5个子情节。啊,好的,你在使用交互式ipython终端吗?在普通终端中运行脚本以使绘图显示在新窗口中可能是值得的。然后,您可以调整窗口的大小,并在GUI(配置子窗口菜单下)中重新应用紧密布局。祝您好运