我是matplotlib的新手。我正在尝试绘制阶跃函数并遇到一些麻烦。现在,我可以从文件中读取并绘制它,如下所示。但是顶部的图不是逐步的,下面的图不是适当的步骤。我看到了通过给出x&y值来绘制阶跃函数的示例。我不知道如何通过读取文件来做到这一点。有人能帮我吗?
from pylab import plotfile, show, gca
import matplotlib.pyplot as plt
import matplotlib.cbook as cbook
fname = cbook.get_sample_data('sample.csv', asfileobj=False)
plotfile(fname, cols=(0,1), delimiter=' ')
plotfile(fname, cols=(0,2), newfig=False, delimiter=' ')
plt.show()
输入样本(3列):
27023927 3 0
27023938 2 0
27023949 3 0
27023961 2 0
27023972 3 0
27023984 2 0
27023995 3 0
27024007 2 0
27024008 2 1
27024018 3 1
27024030 2 1
27024031 2 0
27024041 3 0
27024053 2 0
27024054 2 1
27024098 2 0
注意:我将y轴1的值设为3和2,以便该图可以出现在顶部,而另一个y轴2的值0和1则可以出现在底部,如下图所示
现在的波形
最佳答案
本质上,您的分辨率太低,对于较低的图,步骤(最后一个除外)在x中的1
单位上发生,而步长大约大一个数量级。这会显示阶梯的外观,而如果您放大,则会看到垂直线具有非无限的渐变(真实的阶梯随无限的渐变而变化)。
对于顶部图和底部图,这都是相同的问题。我们可以使用step
function轻松地对此进行补救。通常,您会发现导入数据更容易,在此示例中,我使用了功能强大的numpy genfromtxt
。这会将数据加载为数组data
:
import numpy as np
import matplotlib.pylab as plt
data = np.genfromtxt('test.csv', delimiter=" ")
ax1 = plt.subplot(2,1,1)
ax1.step(data[:,0], data[:,1])
ax2 = plt.subplot(2,1,2)
ax2.step(data[:,0], data[:,2])
plt.show()
如果您是python的新手,那么可能有两件事要提及,我们使用两个子图(
ax1
和ax2
)来绘制数据,而不是在同一图上绘制(这意味着您不需要添加值)在空间上将它们分开)。我们通过[]
访问数组的元素,这给出了[column, row]
,其中:
表示所有列,索引i
是ith
列关于python - 通过读取文件进行步骤绘图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18865367/