【问题标题】:Python pandas line plot: change x-axis to be linearPython熊猫线图:将x轴更改为线性
【发布时间】:2018-07-19 15:08:21
【问题描述】:

我有一个看起来像这样的熊猫数据框:

df.x = [2, 4, 16, 256]

df.y = [1,2,4,16]

我想用线性 x 轴绘制线图,尽管 x 值不是线性的。

目前,如果我将此数据帧绘制为 df.plot(),我会得到这个,因为 x 值不是线性的:

但是,上图没有正确显示趋势。我要这个:

请注意,X 轴刻度和标签是线性的,但值不是。

如何正确绘制图表?我尝试重命名 xticklabels,但没有成功。

【问题讨论】:

    标签: python pandas matplotlib plot axis-labels


    【解决方案1】:

    您的索引(X 轴)似乎是 object(字符串)dtype) - 在绘图之前将其转换为数字 dtype。

    演示:

    In [99]: df.index.dtype
    Out[99]: dtype('O')   # <----- NOTE !
    

    绘制原始 DF:

    In [100]: df.plot()
    Out[100]: <matplotlib.axes._subplots.AxesSubplot at 0xe74e278>
    

    让我们将 index 转换为 numeric dtype 并再次绘制它:

    In [101]: df.set_index(pd.to_numeric(df.index, errors='coerce')).plot()
    Out[101]: <matplotlib.axes._subplots.AxesSubplot at 0xadd94e0>
    

    【讨论】:

      【解决方案2】:

      你需要set_index

      df.set_index('x').y.plot()
      

      【讨论】:

      • @Dev 基于样本数据,应该没问题
      • 我正在对更改索引的原始数据进行数据透视表。所以首先我必须这样做:df.reset_index().rename_axis(None, axis=1),然后在结果数据帧上执行 set_index()。我想我做错了什么。它不应该这么复杂。
      猜你喜欢
      • 2019-06-18
      • 2015-05-04
      • 2017-01-10
      • 2013-01-12
      • 2021-11-28
      • 1970-01-01
      • 2017-02-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多