gpt4 book ai didi

python - 如何沿曲线注释文本

转载 作者:太空狗 更新时间:2023-10-29 21:05:38 25 4
gpt4 key购买 nike

我正在尝试在绘图中注释文本,以便它们遵循线条的曲率。我有以下情节:

enter image description here

这就是我想要获得的,如果我为注释固定一个特定的 y 值,对于每条曲线,它应该沿着曲线以所需的斜率放置注释(即它应该遵循曲线的曲率)作为如下所示:

enter image description here

没有注释的情节的可重现代码是:

import numpy as np
import matplotlib.pyplot as plt

x = np.array([[53.4, 57.6, 65.6, 72.9],
[60.8, 66.5, 73.1, 83.3],
[72.8, 80.3, 87.2, 99.3],
[90.2, 99.7, 109.1, 121.9],
[113.6, 125.6, 139.8, 152]])

y = np.array([[5.7, 6.4, 7.2, 7.8],
[5.9, 6.5, 7.2, 7.9],
[6.0, 6.7, 7.3, 8.0],
[6.3, 7.0, 7.6, 8.2],
[6.7, 7.5, 8.2, 8.7]])

plt.figure(figsize=(5.15, 5.15))
plt.subplot(111)
for i in range(len(x)):
plt.plot(x[i, :] ,y[i, :])
plt.xlabel('X')
plt.ylabel('Y')
plt.show()

如何使用 matplotlib 在 Python 中放置此类文本?

最佳答案

您可以获得以度为单位的渐变,并在 matplotlib.text.Text 中使用它和旋转参数

rotn = np.degrees(np.arctan2(y[:,1:]-y[:,:-1], x[:,1:]-x[:,:-1]))

编辑:所以它比我建议的有点困惑,因为绘图区域被缩放以匹配数据并且有边距等。但你明白了

...
plt.figure(figsize=(7.15, 5.15)) #NB I've changed the x size to check it didn't distort
plt.subplot(111)
for i in range(len(x)):
plt.plot(x[i, :] ,y[i, :])

rng = plt.axis()
x_scale = 7.15 * 0.78 / (rng[1] - rng[0])
y_scale = 5.15 * 0.80 / (rng[3] - rng[2])
rotn = np.degrees(np.arctan2((y[:,1:]-y[:,:-1]) * y_scale,
x[:,1:]-x[:,:-1]) * x_scale)
labls = ['first', 'second', 'third', 'fourth', 'fifth']
for i in range(len(x)):
plt.annotate(labls[i], xy=(x[i,2], y[i,2]), rotation=rotn[i,2])

plt.xlabel('X')

RE-EDIT 注意到缩放比例是错误的,但只是巧合!由于缩放,标签的 xy 值也有点近似。

关于python - 如何沿曲线注释文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29765357/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com