如何自动推导pandas plot()中的轴

火焰盖

我正在努力复制熊猫df.plot()文档的“基本绘图:图”部分中令人满意地承诺的优雅易用性和成功的结果,网址为:

http://pandas.pydata.org/pandas-docs/stable/visualization.html#visualization

在那里,作者的第一张图片非常接近我要从数据框中绘制的折线图。他们的第一个df以及由此产生的图是单线的,就像我希望在绘制时看到下面的df一样。

我的df看起来像这样:

            2014-03-28  2014-04-04  2014-04-11  2014-04-18  \
Jenny Todd    1699.6      1741.6      1710.7      1744.2   

            2014-04-25  2014-05-02  2014-05-09  
Jenny Todd    1764.2      1789.7      1802.3 

他们的第二张图片是多线图,与我尝试绘制df的多索引版本时所希望的非常相似。例如:

                    2014-06-13  2014-06-20  2014-06-27  \
William Acer        1674.7      1689.4      1682.0   
Katherine Baker     1498.5      1527.3      1530.5   


                    2014-07-04  2014-07-11  2014-07-18  \
William Acer        1700.0      1674.5      1677.8   
Katherine Baker     1540.4      1522.3      1537.3   

                    2014-07-25  
William Acer        1708.0  
Katherine Baker     1557.1

但是,他们得到了情节。我得到了无特征的3.3kb图像和一个警告:

/home/lee/test/local/lib/python2.7/site-packages/matplotlib/axes/_base.py:2787:UserWarning:尝试将相同的left == right设置为单数转换;自动扩展。左= 0.0,右= 0.0'左=%s,右=%s')%(左,右))

该文档的作者似乎具有plot()函数,该函数从df的索引推导出x轴的值以及y轴的范围和值。

到处搜寻,我会发现有人遇到这种“轴”错误,他们的数据不同,索引不同,场景不同(例如,将一列与另一列作图或试图产生多个子图)。但是,我无法将他们的问题映射到我的问题上。

我想知道是否有人可以帮助解决我的数据或代码的不同之处,从而导致与文档的看似相似的数据和看似相似的代码产生不同的绘图结果。

我的代码:

print plotting_df # (This produces the df examples I pasted above)
plottest = plotting_df.plot.line(title='Calorie Intake', legend=True)
plottest.set_xlabel('Weeks')
plottest.set_ylabel('Calories')
fig = plt.figure()
plot_name = week_ending + '_' + collection_name + '.png'
fig.savefig(plot_name)

请注意,此数据帧在脚本中多次动态创建。在任何给定的运行中,脚本都将获取不同的日期集,名称不同的人以及要绘制的不同数字。因此,对于预先绘制的索引和图例标签将使用哪些字符串,我没有可预测性。我确实对格式有可预测性。

我得到我的数据框的日期索引具有与引用的文档描述不同的日期格式。这是原因吗?不管是不是,如何最好地解决这一问题?

添加于2016-08-24以回答以下有关无法重新创建我的数据的评论

plotting_df是动态创建的,它是更大数据帧的子集。它只是一个索引(有时是多个索引)和一些从较大数据框中提取的日期列。产生plotting_df的代码可以正常工作,并且始终以我期望的格式产生带有正确索引和列的plotting_df。

我可以使用以下python代码模拟创建要存储在plotting_df中的数据集:

plotting_1 = {
          '2014-03-28': 1699.6,
          '2014-04-04': 1741.6,
          '2014-04-11': 1710.7,
          '2014-04-18': 1744.2,
          '2014-04-25': 1764.2,
          '2014-05-02': 1789.7,
          '2014-05-09': 1802.3
        }

plotting_df = pd.DataFrame(plotting_1, index=['Jenny Todd'])

我可以使用以下python代码模拟多索引plotting_df的创建:

plotting_2 = {
            'Katherine Baker': {
                '2014-06-13': 1498.5,
                '2014-06-20': 1527.3,
                '2014-06-27': 1530.5,
                '2014-07-04': 1540.4,
                '2014-07-11': 1522.3,
                '2014-07-18': 1537.3,
                '2014-07-25': 1557.1
            },
            'William Acer': {
                '2014-06-13': 1674.7,
                '2014-06-20': 1689.4,
                '2014-06-27': 1682.0,
                '2014-07-04': 1700.0,
                '2014-07-11': 1674.5,
                '2014-07-18': 1677.8,
                '2014-07-25': 1708.0
            }
}

plotting_df = pd.DataFrame.from_dict(plotting_2)

我确实尝试了建议的代码转换:

plotdf = plotting_df.T
plotdf.index = pd.to_datetime(plotdf.index)

这样我的原始代码现在看起来像:

print plotting_df # (This produces the df examples I pasted above)
plotdf = plotting_df.T # Transform the df - date columns to indices
plotdf.index = pd.to_datetime(plotdf.index) # Convert indices to datetime
plottest = plotdf.plot.line(title='Calorie Intake', legend=True)
plottest.set_xlabel('Weeks')
plottest.set_ylabel('Calories')
fig = plt.figure()
plot_name = week_ending + '_' + collection_name + '.png' 
fig.savefig(plot_name)

但是我仍然得到相同的结果(创建了3.3kb的空白图像)。

我确实注意到,当我打印出plotdf的第一个实例时,添加转换没有任何区别。那我应该做一些其他的转换吗?

杰西泰尔

这是你的问题:

fig = plt.figure()
plot_name = week_ending + '_' + collection_name + '.png' 
fig.savefig(plot_name)

您在创建第一个图形之后创建第二个图形,然后仅保存该第二个空白图形。只需取出线fig = plt.figure()并更改fig.savefigplt.savefig

因此,您应该具有:

print plotting_df # (This produces the df examples I pasted above)
plotdf = plotting_df.T # Transform the df - date columns to indices
plotdf.index = pd.to_datetime(plotdf.index) # Convert indices to datetime
plottest = plotdf.plot.line(title='Calorie Intake', legend=True)
plottest.set_xlabel('Weeks')
plottest.set_ylabel('Calories')
plot_name = week_ending + '_' + collection_name + '.png' 
plt.savefig(plot_name)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将数据框的两列用作Pandas.plot或matplotlib.plot中的一个轴

来自分类Dev

具有两个y轴的Pandas中的Plot():第二行存储在哪里?

来自分类Dev

熊猫:如何在pd.DataFrame.plot()中的x轴上显示较小的网格线

来自分类Dev

R中的Plot_ly:如何添加适当的轴标签和刻度值?

来自分类Dev

如何在effect_plot函数中调整y轴范围

来自分类Dev

如何使用r中的plot()在x轴上创建具有有序字符变量的散点图?

来自分类Dev

如何使用列表推导式在 Pandas 中执行条件列操作?

来自分类Dev

如何在RG R中自动移动轴标签

来自分类Dev

访问pandas.DataFrame.plot()返回的子图轴

来自分类Dev

pandas.DataFrame.plot() 更新后不显示 x 轴

来自分类Dev

如何反转ILNumerics中的轴

来自分类Dev

为什么g ++ 5在自动类型推导中推导对象而不是initializer_list

来自分类Dev

自动从成员函数签名中推导lambda参数

来自分类Dev

(R)gbm.plot中的轴宽度

来自分类Dev

在Haskell中如何实现列表推导?

来自分类Dev

在Manim中,如何设置轴标签的文本与轴单位不同?

来自分类Dev

如何在 OxyPlot 中仅重置 Y 轴/X 轴

来自分类Dev

如何隐藏/显示轴,而不是 matplotlib 中的轴

来自分类Dev

如何在python pandas数据框中隐藏轴标签?

来自分类Dev

如何沿X轴绘制“ _”对象但沿Y轴改变值?(在python,matplotlib,pandas中)

来自分类Dev

Pandas中plot与plot()之间的区别

来自分类Dev

Pandas catplot 中的随机 y 轴

来自分类Dev

如何在Tableau中显示轴

来自分类Dev

如何删除pyplot.bar中的轴?

来自分类Dev

在R中,如何设置x轴的中断?

来自分类Dev

如何删除R ggplot中的轴标记

来自分类Dev

如何消除晶格中的y轴约束?

来自分类Dev

如何在gnuplot中确定轴的长宽比?

来自分类Dev

如何在HighChart中设置y轴?

Related 相关文章

  1. 1

    将数据框的两列用作Pandas.plot或matplotlib.plot中的一个轴

  2. 2

    具有两个y轴的Pandas中的Plot():第二行存储在哪里?

  3. 3

    熊猫:如何在pd.DataFrame.plot()中的x轴上显示较小的网格线

  4. 4

    R中的Plot_ly:如何添加适当的轴标签和刻度值?

  5. 5

    如何在effect_plot函数中调整y轴范围

  6. 6

    如何使用r中的plot()在x轴上创建具有有序字符变量的散点图?

  7. 7

    如何使用列表推导式在 Pandas 中执行条件列操作?

  8. 8

    如何在RG R中自动移动轴标签

  9. 9

    访问pandas.DataFrame.plot()返回的子图轴

  10. 10

    pandas.DataFrame.plot() 更新后不显示 x 轴

  11. 11

    如何反转ILNumerics中的轴

  12. 12

    为什么g ++ 5在自动类型推导中推导对象而不是initializer_list

  13. 13

    自动从成员函数签名中推导lambda参数

  14. 14

    (R)gbm.plot中的轴宽度

  15. 15

    在Haskell中如何实现列表推导?

  16. 16

    在Manim中,如何设置轴标签的文本与轴单位不同?

  17. 17

    如何在 OxyPlot 中仅重置 Y 轴/X 轴

  18. 18

    如何隐藏/显示轴,而不是 matplotlib 中的轴

  19. 19

    如何在python pandas数据框中隐藏轴标签?

  20. 20

    如何沿X轴绘制“ _”对象但沿Y轴改变值?(在python,matplotlib,pandas中)

  21. 21

    Pandas中plot与plot()之间的区别

  22. 22

    Pandas catplot 中的随机 y 轴

  23. 23

    如何在Tableau中显示轴

  24. 24

    如何删除pyplot.bar中的轴?

  25. 25

    在R中,如何设置x轴的中断?

  26. 26

    如何删除R ggplot中的轴标记

  27. 27

    如何消除晶格中的y轴约束?

  28. 28

    如何在gnuplot中确定轴的长宽比?

  29. 29

    如何在HighChart中设置y轴?

热门标签

归档