use*_*435 6 python plot matplotlib
我正在制作折线图,并想沿着绘制的线添加第三个变量(时间)的对数刻度线。以下是我输入的简化版本,实际情况并不那么简洁。
input_x = [0, 0.5, 1, 2.5, 2, 2.5, 3, 3.5, 4, 4.5]
input_y = [10, 20, 30, 40, 50, 60, 70, 80 , 90, 100]
input_time = [11, 30, 40, 250, 356, 488, 571, 765, 823, 1002]
Run Code Online (Sandbox Code Playgroud)
然后我插入这些:
time_range = [i for i in range(0.1, 2.5, 10)]
interpolate1 = interp1d(input_time, input_x, kind='linear')
y = interpolate1(time_range)
interpolate2 = interp1d(input_time, input_y, kind='linear')
x = interpolate2(time_range)
Run Code Online (Sandbox Code Playgroud)
并定义我想要沿线图显示为日志刻度的时间刻度:
time_ticks = [1,2,3,4,5,6,7,8,9,10,20,30,40,50,60,70,80,90,100,200,300,400,500,600,700,800,900,1000]
Run Code Online (Sandbox Code Playgroud)
然后求此时x和y的值:
tick_array = [min(zip(time_range, x, y), key=lambda i:abs(i[0]-val)) for val in time_ticks]
tick_x = [line[1] for line in tick_array]
tick_y = [line[2] for line in tick_array]
Run Code Online (Sandbox Code Playgroud)
并绘制 x 和 y 值的折线图:
fig = plt.figure()
plt.plot(x, y)
Run Code Online (Sandbox Code Playgroud)
我知道我可以在 time_tick 点绘制:
plt.plot(tick_x, tick_y, '|')
Run Code Online (Sandbox Code Playgroud)
但这只是绘制垂直虚线,我希望它们垂直于绘制的线。python中有一个函数可以为我做这个吗?
归档时间: |
|
查看次数: |
1573 次 |
最近记录: |