问题描述
我有这三个列表
odds = [1,3,5,7,9]
evens = [2,4,6,8,10]
all_nums = [2,1,10,9]
我需要先画一条线显示all_nums
中的值,然后再画另外两条线来连接odds
和evens
中的值。
我不确定如何绘制红线和绿线,因为它们是基于x轴相对于蓝线的“间隔2”产生的。
请注意,我的真实项目比本示例要复杂得多,其中第一行看起来像
而且我需要连接所有的谷点和所有的峰点,所以我不能简单地应用诸如在绘制时将odds = [1,9]
更改为odds = [1,2,9,10]
之类的技巧,因为我希望曲线之间的连接也能保持平滑点。
谢谢您的帮助!
解决方法
我对偶数行和奇数行做了这样的事情。奇数看起来是1:1,甚至看起来是y-2。
odds = [1,3,5,7,9]
evens = [2,4,6,8,10]
all_nums = [2,1,10,9]
even_sep=[]
odd_sep=[]
plt.plot(range(len(all_nums)),all_nums,label='odds and evens')
for draw_num_iter in range(len(all_nums)):
draw_num = all_nums[draw_num_iter]
plt.annotate(draw_num,xy=(draw_num_iter,draw_num),size=20)
for i in range(len(evens)):
even_sep.append(evens[i]-2)
plt.plot(even_sep,evens,'ro-')
for i in range(len(odds)):
odd_sep.append(odds[i])
plt.plot(odd_sep,odds,'g')
plt.legend(loc='best')
plt.show()