fig, ax = plt.subplots() for col in columns: ax.plot(df[col], color=random.choice(['r', 'g', 'b', 'y', 'm', 'c'])) ax.set_xlabel('X Label') ax.set_ylabel('Y Label') return fig给线加上标注
时间: 2023-08-20 20:26:23 浏览: 98
要给线加上标注,可以在循环中添加以下代码:
```
for col in columns:
line, = ax.plot(df[col], color=random.choice(['r', 'g', 'b', 'y', 'm', 'c']))
ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.annotate(col, xy=(df.index[-1], df[col].iloc[-1]), xytext=(10, 10), textcoords='offset points', color=line.get_color(), fontsize=12, ha='left', va='bottom')
```
这里使用了 `ax.annotate()` 函数来添加标注。它的参数解释如下:
- `xy`:标注的位置,这里是最后一个数据点的位置。
- `xytext`:标注文本的位置偏移量。
- `textcoords`:标注文本的坐标系,这里使用了相对于偏移量的坐标系。
- `color`:标注文本的颜色,这里使用了线的颜色。
- `fontsize`:标注文本的字体大小。
- `ha`:标注文本的水平对齐方式,这里设为左对齐。
- `va`:标注文本的垂直对齐方式,这里设为底部对齐。
这样就可以在每条线上添加标注了。
相关问题
import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns from pandas_profiling import ProfileReport from sklearn import datasets from mpl_toolkits.mplot3d import Axes3D from sklearn.decomposition import PCA from sklearn.preprocessing import StandardScaler data=pd.read_csv('H:/analysis_results/mean_HN.csv') columns=['folder', 'volume', 'convex_volume', 'surface_area','length','max_width', 'max_depth'] data.head() values=data.iloc[:,1:7] correlation=values.corr() fig,ax=plt.subplots(figsize=(12,10)) sns.heatmap(correlation,annot=True,annot_kws={'size':16},cmap='Reds',square=True,ax=ax) sns.pairplot(data,hue='folder') plt.show()如何保存这两张图
你可以在代码的最后添加以下语句来保存这两张图:
```python
fig.savefig('heatmap.png')
sns_plot = sns.pairplot(data,hue='folder')
sns_plot.savefig('pairplot.png')
```
这将会把热力图保存为 `heatmap.png`,把散点图矩阵保存为 `pairplot.png`,并将它们存储在当前工作目录下。请确保你有当前工作目录的写入权限。
import pandas as pd import matplotlib.pyplot as plt from matplotlib.dates import DateFormatter # 读取表格数据 data = pd.read_excel('E:/应统案例大赛/附件1-股票交易数据/yuceclose.xlsx') # 获取日期和14个股票的收盘价数据 date_data = data.iloc[:, 0] # 假设日期数据在第1列中 closing_data = data.iloc[:, 1:15] # 假设收盘价数据在第2~15列中 # 绘制收盘价趋势图 fig, ax = plt.subplots() ax.plot(date_data, closing_data) # 设置横坐标主刻度为月份,并将刻度标签的格式设置为"年-月" ax.xaxis.set_major_formatter(DateFormatter('%Y-%m')) # 添加图例 plt.legend() #closing_data.plot() # 设置图表标题和横纵坐标标签 plt.title('Closing Prices Trend') plt.xlabel('Date') plt.ylabel('Closing Price') # 对收盘价数据进行统计描述 closing_data_stats = closing_data.describe() # 绘制收盘价数据的箱线图 closing_data.plot.box() plt.title('Boxplot of Closing Prices') plt.ylabel('Closing Price') # 显示图表 plt.show()为什么没有每条线的名字
在代码中,您没有指定每个股票收盘价的名称,因此在绘制图表时没有显示每条线的名字。您可以在调用 `plot` 函数时使用 `label` 参数来指定每条线的名称。例如,以下代码将每个股票的名称作为标签添加到图表中:
```
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.dates import DateFormatter
# 读取表格数据
data = pd.read_excel('E:/应统案例大赛/附件1-股票交易数据/yuceclose.xlsx')
# 获取日期和14个股票的收盘价数据
date_data = data.iloc[:, 0] # 假设日期数据在第1列中
closing_data = data.iloc[:, 1:15] # 假设收盘价数据在第2~15列中
# 绘制收盘价趋势图
fig, ax = plt.subplots()
for col in closing_data.columns:
ax.plot(date_data, closing_data[col], label=col) # 使用label参数指定每条线的名称
# 设置横坐标主刻度为月份,并将刻度标签的格式设置为"年-月"
ax.xaxis.set_major_formatter(DateFormatter('%Y-%m'))
# 添加图例
plt.legend()
# 设置图表标题和横纵坐标标签
plt.title('Closing Prices Trend')
plt.xlabel('Date')
plt.ylabel('Closing Price')
# 对收盘价数据进行统计描述
closing_data_stats = closing_data.describe()
# 绘制收盘价数据的箱线图
closing_data.plot.box()
plt.title('Boxplot of Closing Prices')
plt.ylabel('Closing Price')
# 显示图表
plt.show()
```
在上面的代码中,我们使用了一个循环来遍历 `closing_data` 中的每一列,并使用 `label` 参数将每个股票的名称添加到图表中。然后,我们调用 `legend` 函数来添加图例。
阅读全文