Python 在matplotlib中将模式编码为颜色
我有一个传感器,我正在收集数据。基本上,它是开还是关取决于它与设计的感知距离。所以,我有一个轮子上的小装置,我用它把传感器移向材料,然后把它拉开……然后把它推回,再把它拉开。想象一下吸尘时你会做什么动作 所以,不管怎样,当我在很远的地方,传感器是关闭的…当我真正靠近时,传感器是打开的。没有问题。 我感兴趣的是灰色区,甜点区,黄油区,不管你怎么称呼它,有时它会打开,也许在下一个关口,它会打开 我想在我用MatplotLib绘制的数据图中对其进行编码。我的想法是根据数据中出现的频率对转换进行热映射? 正如你所看到的,这是相当无聊和无趣的。我想通过加入一些其他机制来传达变换的变化,使它看起来更漂亮、更花哨。在这一点上,我可能已经从高到低,从低到高,在15-1000次的距离上,所有其他的转换都可能发生过一次…没有办法告诉你 如何将这种映射添加到这种数据中 这是python脚本…非常简单的东西:Python 在matplotlib中将模式编码为颜色,python,matplotlib,plot,graph,statistics,Python,Matplotlib,Plot,Graph,Statistics,我有一个传感器,我正在收集数据。基本上,它是开还是关取决于它与设计的感知距离。所以,我有一个轮子上的小装置,我用它把传感器移向材料,然后把它拉开……然后把它推回,再把它拉开。想象一下吸尘时你会做什么动作 所以,不管怎样,当我在很远的地方,传感器是关闭的…当我真正靠近时,传感器是打开的。没有问题。 我感兴趣的是灰色区,甜点区,黄油区,不管你怎么称呼它,有时它会打开,也许在下一个关口,它会打开 我想在我用MatplotLib绘制的数据图中对其进行编码。我的想法是根据数据中出现的频率对转换进行热映射?
import numpy as np
import matplotlib.pyplot as plt
data = np.genfromtxt('/home/dale/test1.txt', delimiter=',', skip_header=10, names=['x','y'])
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.set_title("Distance vs Level")
ax1.set_xlabel('Distance')
ax1.set_ylabel('Logic Level')
ax1.step(data['x'],data['y'], c='r', label='the data')
leg = ax1.legend()
plt.show()
我不同意托马斯的评论。该图表有几个问题,从数据中可以立即看出 1) 距离度量是离散的,而绘制的是一条连续线。图表不应该掩盖这一点 2) 由于数据是连续的,因此该行最终会经常处于自身之上。这隐藏了真实的频率 我认为您只需要一个条形图,而不是建议的热图:
我想你首先要弄清楚你想要实现什么以及为什么。我认为这些问题不适用于stackoverflow。“以某种方式使图表看起来更华丽”可能太宽泛了。一旦你知道了你的图表应该是什么样子,可能会有很多关于如何实现这一点的答案!真是太好了,伙计!你认为你能在那里加一条最合适的线吗?要得到一条曲线非常好的直线,并在下降的中间平滑下来?您希望适合哪种类型的直线?如果你问我的话,可能是乙状结肠。如果你很难找到合适的线条,你应该提出一个新问题。
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
# grab data
df = pd.read_csv('sensor_data.csv')
position = df.Counter
status = df.Value
# determine fraction on;
# I will use bincount for this, which only accepts positive arguments
min_pos = position.min()
position -= min_pos
# determine fraction on
counts_on = np.bincount(position[status==1], minlength=position.max()+1)
counts_all = np.bincount(position, minlength=position.max()+1)
fraction_on = counts_on.astype(float) / counts_all
# plot
x = np.arange(min_pos, position.max()+1+min_pos)
fig, ax = plt.subplots(1,1)
ax.bar(x-0.5, fraction_on, width=1., facecolor='gray', edgecolor=None)
ax.set_xlabel('Distance')
ax.set_ylabel(r'Logic Level $\frac{ON}{ON + OFF}$')