matplotlib:值错误x和y具有不同的维度

时间:2013-04-23 00:11:07

标签: matplotlib

难以绘制出按文本/名称字段和日期范围分组的值。问题在于,虽然我可以按名称分组并生成某些日期范围的图,但有些情况下分组包含缺少的日期值(仅仅是整个数据集的性质)。

也就是说,我可以很好地为一些分组值绘制date_range('10 / 1/2013','10 / 31/2013'),但有些情况下有在该范围内没有'10 / 15/2013',因此将抛出本文标题中提到的错误。

感谢您的任何意见!

plt.rcParams['legend.loc'] = 'best'

  dtable = pd.io.parsers.read_table(str(datasource), sep=',')
  unique_keys = np.unique(dtable['KEY'])

  index = date_range(d1frmt, d2frmt)
  for key in unique_keys:

      values = dtable[dtable['KEY'] == key]

      plt.figure()

      plt.plot(index, values['VAL']) <--can fail if index is missing a date

      plt.xlim(xmin=d1frmt,xmax=d2frmt)
      plt.xticks(rotation=270)
      plt.xticks(size='small')
      plt.legend(('H20'))
      plt.ylabel('Head (ft)')
      plt.title('Well {0}'.format(key))
      fig =  str('{0}.png'.format(key))

      out = str(outputloc) + "\\" + str(fig)

      plt.savefig(out)
      plt.close()

1 个答案:

答案 0 :(得分:0)

必须在您的dtable中包含日期列或索引。否则你不知道values['Val']中哪个属于哪个日期。

如果你这样做,有两种方法。

由于你根据一个键创建了一个子集,你可以使用该子集的索引(如果它是一个日期时间!):

plt.plot(values.index.to_pydatetime(), values['VAL'])

或将子集重新索引到“目标”范围“:

values = values.reindex(index)
plt.plot(index.to_pydatetime(), values['VAL'])

默认情况下,reindex会将NaN值作为缺失数据插入。

如果你提供一个有用的例子会更容易,如果不知道你的Dataframe是什么样的话,有点难以回答。