如何在matplotlib中绘制坡度三角形?

2024-04-26 01:22:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我想要的是图中所示的三角形: enter image description here

这是我的密码:

import matplotlib.pyplot as plt
data= [0.2855,0.3030,0.4995]
x = [1,2,3]
plt.plot(x, data)
plt.show

有没有一种简单的方法可以自动插入这些倾斜三角形,如图所示?我想在两点中间画一个三角形,旁边写着斜率。你知道吗


Tags: 方法import密码dataplotmatplotlibasshow
1条回答
网友
1楼 · 发布于 2024-04-26 01:22:52

根据您对“自动时尚”的想法,这可能是一个合适的解决方案:

import matplotlib.pyplot as plt
import numpy as np

# Data
x = np.array([1, 2, 3])
y = np.array([0.2855, 0.3030, 0.4995])

# Calculate triangle coordinates values
x_mid = np.convolve(x, [0.5, 0.5], mode='valid')
x_tri = np.vstack((x_mid, x_mid + 0.3))
y_tri = np.interp(x_tri, x, y)

# Calculate slopes
slopes = np.diff(y) / np.diff(x)

# Plot
plt.plot(x, y)
plt.plot(x_tri, np.tile(y_tri[0, :], [2, 1]), 'r')      # red horizontal line
plt.plot(np.tile(x_tri[1, :], [2, 1]), y_tri, 'r')      # red vertical line
for i, slope in enumerate(slopes):                      # slope values
    plt.text(x_tri[1, i] + 0.05, np.mean(y_tri[:, i]), r'{0:.3f}'.format(slope))
plt.show()

输出:

Output

把所有的三角形放在一个单独的函数中,它不会对主代码产生太大的影响。你知道吗

希望有帮助!你知道吗

相关问题 更多 >