折线图在每个点添加注释
时间: 2024-03-07 08:49:38 浏览: 33
要在折线图中每个数据点上添加注释,可以使用 for 循环遍历每个数据点,并使用 annotate() 函数或 text() 函数在每个点上添加注释。
以下是一个使用 annotate() 函数在每个数据点上添加注释的例子:
```python
import matplotlib.pyplot as plt
# 创建数据
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
# 创建折线图
plt.plot(x, y)
# 在每个数据点上添加注释
for i in range(len(x)):
plt.annotate(f'({x[i]}, {y[i]})', xy=(x[i], y[i]), xytext=(x[i]+0.2, y[i]+0.5))
# 显示图表
plt.show()
```
上述代码中,我们首先创建了一个包含 x 和 y 数据的折线图。然后,我们使用 for 循环遍历每个数据点,使用 annotate() 函数在每个点上添加注释。注释内容是数据点的坐标值,注释的位置是数据点的坐标位置加上一个偏移量。在这个例子中,我们将 x 坐标加上 0.2,y 坐标加上 0.5,以使注释显示在数据点上方一定距离的位置。
你也可以使用 text() 函数在每个数据点上添加注释,方法与上面类似。不过需要注意的是,使用 text() 函数添加注释时,坐标位置的计算方式与使用 annotate() 函数略有不同。你需要根据数据点和坐标轴的比例关系来计算出所需的坐标位置。
相关问题
matplotlib画折线图时怎么在每个点上加上具体数值
在matplotlib中,在每个点上加上具体数值可以使用`annotate()`函数,它可以在指定的位置添加带有注释文本的箭头或文本框。
下面是一个示例代码:
```python
import pandas as pd
import pymysql
import matplotlib.pylab as plt
# 解决中文乱码
plt.rcParams['font.sans-serif'] = 'SimHei'
# 连接数据库
try:
conn = pymysql.connect(
host='192.168.8.129',
user='root',
passwd='123456',
db='stock',
port=3306,
charset='utf8'
)
except Exception as e:
print('连接数据库失败:', e)
exit(-1)
# 从数据库读取数据
df = pd.read_sql('select * from largest_amplitude', conn)
# 按照x轴的值进行排序
df = df.sort_values('stock_name')
# 绘制折线图
plt.figure(figsize=(13, 9))
plt.xlabel('股票名称')
plt.ylabel('振幅')
plt.title('五天内振幅最大的十只股票折线图', fontsize=18)
# 绘制折线图并在每个点上添加具体数值
for i, (x, y) in enumerate(zip(df['stock_name'], df['amplitude'])):
plt.plot(x, y, 'bo-', linewidth=1)
plt.annotate('%.2f' % y, xy=(x, y), xytext=(-10, 10), textcoords='offset points')
# 显示图形
plt.show()
# 关闭数据库连接
conn.close()
```
在上面的代码中,我们使用了一个for循环遍历每个点,使用`plot()`函数绘制折线图,并使用`annotate()`函数在每个点上添加具体数值。其中,`xy`参数指定添加注释的位置,`xytext`参数指定注释文本的偏移量,`textcoords`参数指定偏移量的参考系。这样就可以在每个点上添加具体数值了。
matplotlib中向折线图添加无指向性注释文本
在matplotlib中,我们可以使用`text`函数向图形添加注释文本。要向折线图添加无指向性注释文本,可以使用以下步骤:
1. 获取折线图上的点的坐标。
2. 使用`text`函数向图形添加注释文本,其中`xy`参数指定注释文本的位置,`text`参数指定注释文本的内容。
以下是一个示例代码,向折线图添加无指向性注释文本:
```python
import matplotlib.pyplot as plt
# 创建数据
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]
# 绘制折线图
plt.plot(x, y)
# 获取折线图上的点的坐标
coords = list(zip(x, y))
# 添加注释文本
for coord in coords:
plt.text(coord[0], coord[1], f"({coord[0]}, {coord[1]})")
# 显示图形
plt.show()
```
在上面的示例代码中,我们使用`zip`函数将`x`和`y`两个列表打包成一个元组列表,然后遍历元组列表中的每个元组,将元组中的第一个元素作为注释文本的横坐标,将元组中的第二个元素作为注释文本的纵坐标,将注释文本的内容设置为元组中的横纵坐标值。这样就可以向折线图添加无指向性注释文本了。