python - pyplot:在轴上添加点投影
问题描述
我可以使用绘图功能绘制图表。但我想通过在轴上绘制投影并将文本放在点和轴上来突出一些“特殊”点。
我试过这个:
import matplotlib.pyplot as plt
[...]
plt.plot(X, Y, label='data') # draw curve, X and Y are arrays
plt.plot(Xp, Yp, c, duration), marker='o') # draw point @(Xp, Yp), Xp and Yp are scalars
plt.vlines(Xp, min(Y), Yp, linestyles='dashed')
plt.hlines(Yp, min(X), Xp, linestyles='dashed')
plt.grid(True)
plt.show()
但我得到的并不令人满意:
得到我想要的东西的正确方法是什么?
我也考虑过annotate
,但它似乎没有做我需要的。如我错了请纠正我。
解决方案
您可以使用annotate
混合转换:
import matplotlib.pyplot as plt
plt.plot([1,2], [2,4], label='data')
plt.plot([1.7], [3.4], marker='o')
plt.grid(True)
x,y = 1.7, 3.4
arrowprops={'arrowstyle': '-', 'ls':'--'}
plt.annotate(str(x), xy=(x,y), xytext=(x, 0),
textcoords=plt.gca().get_xaxis_transform(),
arrowprops=arrowprops,
va='top', ha='center')
plt.annotate(str(y), xy=(x,y), xytext=(0, y),
textcoords=plt.gca().get_yaxis_transform(),
arrowprops=arrowprops,
va='center', ha='right')
这并不完美,因为您可能仍需要手动调整轴坐标(例如-0.05
,而不是0
)以将标签设置为偏离轴。
推荐阅读
- python - 如何创建相关字段?
- python - Rolling subtraction in pandas
- python - Building a multi-index db
- python - 在循环中执行python异步
- python - In Python: How to use the index number in an if-statement that is nested in a for-loop?
- android - How to translate animation from top?
- image - How to use another library in the tensorflow graph?
- html - HTML Standard for Head layout?
- angular - Angular 6 ActivatedRouteSnapshot Service Firebase
- angular - 404 手动刷新