在matplotlib中向脉冲图的上升沿添加箭头

2024-04-19 09:28:51 发布

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

需要matplotlib中的帮助来找出答案

  1. 如何在绘图上沿曲线/直线绘制向上箭头和向下箭头?

  2. 如何调整绘图的范围/限制,使其边缘在图表上清晰可见?

我想在脉冲波的上升沿添加箭头(脉冲下降沿上的向下箭头将是一种奖励),但无法找到一种简单的方法来实现(注释页上的示例完全有不同的用途)。在

既然图片能让事情更清楚,我的代码是:

from pylab import *

# How do I have arrows pointing up for every even value and pointing down for every odd value along Y axis for the highest freq.

baseFreqTimePeriod = 100
samplingFreqTimePeriod = 0.001

numberOfPulses = 10

def baseFreq(inputTime, timePeriod):

    sampleWindow = timePeriod

    return [ (1.0/(timePeriod/baseFreqTimePeriod)) if((i % sampleWindow) <= (sampleWindow / 2)) else 0.0 for i in inputTime ]

    '''
    output = []

    for i in inputTime:

        sampleIsAtPosition = i % sampleWindow

        if(sampleIsAtPosition <= (sampleWindow / 2)):

            output.append(1.0/(timePeriod/baseFreqTimePeriod))
        else:
            output.append(0.0)

    return output
    '''

t = arange(0.0, numberOfPulses * baseFreqTimePeriod, samplingFreqTimePeriod)

baseFreqFn = baseFreq(t, baseFreqTimePeriod)
plot(t, baseFreqFn, linewidth=1.0)

baseFreqFn = baseFreq(t, 2 * baseFreqTimePeriod)
plot(t, baseFreqFn, linewidth=2.0)

baseFreqFn = baseFreq(t, 3 * baseFreqTimePeriod)
plot(t, baseFreqFn, linewidth=2.0)

xlabel('time (uS)')
ylabel('Amplitude')
title('Test')
grid(True)
show()

这将生成输出:

enter image description here

相反,这会让我很高兴(只画了前几支箭)

enter image description here

另外,请注意图形的显示窗口如何使全振幅波剪辑的顶部?(底部也被模糊)

如果我能看到峰值到峰值(轴超出数据范围),就太好了,如下所示:

enter image description herehttp://web.mit.edu/6.02/www/f2009/handouts/labs/lab2_7_1.png


Tags: 绘图foroutputplot箭头脉冲everytimeperiod
1条回答
网友
1楼 · 发布于 2024-04-19 09:28:51

要制作箭头,可以使用arrow例程:

     #x,y, dx, dy,
arrow(0,0,  0,1.0,
    'lw':2,
    'color':'black',
    'head_width':baseFreqTimePeriod/4,
    'head_length':0.05

要创建向下箭头,请设置负dy:

^{pr2}$

要更改绘图的限制,请使用xlim和“ylim”:

ylim([-.2,1.2])
xlim([-.1*t[-1],t[-1]*1.1])

有关于arrowxlimylim的文档。也可以使用annotate方法制作文本箭头。在

相关问题 更多 >