【发布时间】:2014-11-25 01:27:00
【问题描述】:
我有一个数据框,其中包含多个实验运行,在特定建模行为上具有不同的“x 尺度”到归零,即
- Exp1: xs = np.linspace(0.005,0.75,10)
- Exp2: xs = np.linspace(0.015,0.035,20)
将这些组合成一个数据框进行处理就像pd.concat 一样简单,但我的困难在于绘制结果。
ax=v.plot(
figsize=(10,13),kind='line',
secondary_y='average_rx_delay',
logy=True,
title="Performance Comparison of Varying Packet Period Rates \n(counts on left, seconds on right)"
)
#ax.set_xlabel('Packet Emmission rate (per second)')
ax.set_ylabel('Packet Count')
如您所见,数据框索引被用作您可以说的“系列标题”,但没有进行数字评估,导致线条不均匀和倾斜。
为什么如果按条形绘制会更容易理解
我正在寻找的是类似于下面的内容,但是是行。
这是在漫长的过程中懒惰地生成的
f, ax1 = plt.subplots()
ax1.scatter(list(v.index),
v.collisions, c='r')
ax1.scatter(list(v.index),
v.tx_counts, c='b')
ax1.scatter(list(v.index),
v.rx_counts, c='g')
ax1.scatter(list(v.index),
v.enqueued, c='y')
ax2=ax1.twinx()
ax2.scatter(list(v.index),
v.average_rx_delay, c='c')
基本上,我希望线图将v.index 作为 x 轴值,但坚持使用实际数字!
我尝试将x=v.index 添加到plot 调用中,并将索引添加为另一列,并尝试以相同的方式使用新列,但这并不令人愉快。
有什么神奇的想法,还是我应该开始走漫长而凌乱的 DIY 之路?
更新
根据@ajean 的问题,这就是数据选择的样子。请注意,PER 是上面提到的x=v.PER 尝试的“再次添加”索引列,但无论如何它都会被主要的.plot 正确丢弃。
【问题讨论】:
-
我有点困惑,
v.index是什么样的?您表示它被用作“系列名称”,但在我看来这些是列。你的两个 x 尺度在 DataFrame 中的什么位置? -
@ajean 更新为包含数据视图。基本上在使用 DataFrame 绘图时,它似乎忽略了索引可能是数字而不是简单分类的想法。长话短说,我正在寻找在 0.015 和 0.035 之间有更多细节的“直线”,因为这是所有有趣的事情都发生的地方。
-
嗯。您的第一个绘图示例不使用
x=v.PER,因此它应该丢弃它,这很好。也许检查你有什么样的索引(即确保它是Float64Index或者它是否会转化为分类)?我觉得plot()应该可以正常工作,除非你在 pandas 中遇到了错误。如果您发布可复制粘贴的数据框,我可以对其进行测试。
标签: python matplotlib pandas plot