如何在同一个图表中绘制
时间: 2024-02-21 13:59:46 浏览: 21
要在同一个图表中绘制多个股票的K线图,可以在代码中添加多组数据,并在绘制K线图时指定每个数据对应的标签。例如:
```
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
# 读取股票数据
df1 = pd.read_csv('stock1.csv')
df2 = pd.read_csv('stock2.csv')
# 将日期转换为数字
df1['date'] = df1['date'].apply(lambda x: mdates.date2num(pd.to_datetime(x)))
df2['date'] = df2['date'].apply(lambda x: mdates.date2num(pd.to_datetime(x)))
# 获取日期数据的最小值和最大值
date_min = min(df1['date'].min(), df2['date'].min())
date_max = max(df1['date'].max(), df2['date'].max())
# 绘制K线图
fig, ax = plt.subplots()
ax.plot(df1['date'], df1['close'], label='Stock 1 Close')
ax.plot(df2['date'], df2['close'], label='Stock 2 Close')
ax.legend()
ax.set_xlabel('Date')
ax.set_ylabel('Price')
ax.set_title('Stock Comparison')
# 设置横轴的显示格式和间隔
ax.xaxis.set_major_locator(mdates.YearLocator(base=1)) # 设置横坐标主刻度为年份
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y')) # 设置刻度标签的格式为"年"
ax.xaxis.set_minor_locator(mdates.MonthLocator(bymonth=(3, 6, 9, 12))) # 设置横坐标次刻度为季度
ax.tick_params(axis='x', which='minor', labelsize=8, labelrotation=45) # 设置次刻度标签的大小和旋转角度
# 保存图表
plt.savefig('stock_comparison.jpg')
# 显示图表
plt.show()
```
这段代码中,我们读取了两个股票的数据,并将它们分别存储在df1和df2中。然后将它们的日期转换为数字,并获取日期数据的最小值和最大值。在绘制K线图时,我们分别用plot()方法绘制每个股票的收盘价,并指定每个数据对应的标签。最后设置横轴的显示格式和间隔,保存图表并显示图表。