Pandas Dataframe使用不均匀的索引值绘制会产生偏斜的图形

时间:2014-11-24 16:44:56

标签: python matplotlib pandas plot

我有一个数据框,包含几个具有不同&x-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')

enter image description here

如您所见,数据框索引被用作'系列标题'你可以说,但它没有经过数字评估,导致线条不均匀和偏斜。

稍微容易看到为什么如果您按照标准进行绘制

bar plots of the problem

我正在寻找的是下面的内容,但是作为一行。

linearised scatter graph

懒散地生成了哪个

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正确丢弃了。

dataframe screenshot

1 个答案:

答案 0 :(得分:1)

您的索引看起来像是一个分类输入。您可以尝试df.column_name = df.column_name.astype(float)。我的答案基于Converting strings to floats in a DataFrame。如果你想要线而不是点,那么你应该使用plot而不是scatter。