You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Matplotlib绘制的特定股票走势图添加图例?

解决方法

方法一:利用Pandas内置绘图(最简单)

直接取消注释你代码里的data['Close'].plot(),替换掉原生matplotlib的plt.plot,再添加图例即可。Pandas的plot方法会自动根据列名生成对应公司的图例:

from pandas_datareader import data as pdr
import yfinance as yf
import matplotlib.pyplot as plt

yf.pdr_override()
y_symbols = ['EA', 'TTWO', 'ATVI']

from datetime import datetime
startdate = datetime(2000,1,1)
enddate = datetime(2023,1,31)
data = pdr.get_data_yahoo(y_symbols, start=startdate, end=enddate)

plt.figure(figsize=(20,10))
# 使用Pandas的plot方法,自动生成公司对应图例
data['Close'].plot()
plt.xlabel("Date")
plt.ylabel("Price (in USD)")
plt.title("Game Corporation Stock Price 1/1/00 - 1/1/23")
# 显示图例
plt.legend()
plt.show()

方法二:手动循环绘制(更灵活)

如果要保留原生matplotlib的plt.plot,可以循环遍历每个公司的收盘价列,明确指定label参数,最后调用plt.legend()显示图例:

from pandas_datareader import data as pdr
import yfinance as yf
import matplotlib.pyplot as plt

yf.pdr_override()
y_symbols = ['EA', 'TTWO', 'ATVI']

from datetime import datetime
startdate = datetime(2000,1,1)
enddate = datetime(2023,1,31)
data = pdr.get_data_yahoo(y_symbols, start=startdate, end=enddate)

plt.figure(figsize=(20,10))
# 循环每个公司,绘制走势并指定标签
for symbol in y_symbols:
    plt.plot(data.index, data['Close'][symbol], label=symbol)
plt.xlabel("Date")
plt.ylabel("Price (in USD)")
plt.title("Game Corporation Stock Price 1/1/00 - 1/1/23")
# 显示图例
plt.legend()
plt.show()

原代码无图例的原因

你之前直接用plt.plot(data.index, data['Close'])时,matplotlib会一次性绘制所有列,但不会自动给每条线分配对应公司的标签,所以即使调用plt.legend()也无法显示正确的图例。上面两种方法都通过明确指定每条线的标签,让图例能正确关联各公司的走势。

内容的提问来源于stack exchange,提问作者Freya the Goddess

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 14:45:59