我最近发现matplotlib是一个比Matlab更好的绘图替代品。不幸的是,我对python的了解接近于零。
考虑下图和相关代码。
import numpy as np
import scipy.io
from matplotlib import pyplot as plt
plt.figure(figsize=[3.3, 3.3])
plt.rcParams.update({'font.size': 8, 'text.usetex': True})
plt.plot([1, 2, 3, 4], [1, 4, 9, 16], color='r')
plt.plot([1, 2, 3, 4], [2, 5, 10, 17], color='r')
plt.plot([1, 2, 3, 4], [11, 14, 19, 26], color='b')
plt.plot([1, 2, 3, 4], [12, 15, 20, 27], color='b')
plt.annotate('blue curves', xy=(1.5, 22.5), xytext=(1.5, 22.5), ha='center', va='center')
plt.annotate('', xy=(2, 15), xytext=(1.5, 22), arrowprops=dict(width=0.1, headwidth=2, headlength=2, color='grey'))
plt.annotate('red curves', xy=(2.5, 22.5), xytext=(2.5, 22.5), ha='center', va='center')
plt.annotate('', xy=(3, 10), xytext=(2.5, 22), arrowprops=dict(width=0.1, headwidth=2, headlength=2, color='grey'))
plt.grid()
plt.xlabel('x')
plt.ylabel('y')
plt.savefig('filename.pdf', format='pdf')
plt.show()
我想在每个箭头上添加一个小椭圆/圆来包围曲线。椭圆/圆应该具有与箭头相同的风格(即颜色,厚度等)。有没有一种简单的方法来做到这一点,而无需修改现有的代码?
我试图从this example中获得一些灵感,但它没有工作。
2条答案
按热度按时间5lhxktic1#
一个简单的解决方案,如果一个圆是好的,是在箭头的位置添加一个分散点(我没有安装LaTex):
yhxst69z2#
虽然你可以在你的
plt
-对象上调用plot
和annotate
,但你需要访问figure
和axis
。这里给出了一个很好的解释图,图和轴之间的区别。您需要添加的代码(在
plt.show()
之前):