Python 直线打印:将x轴更改为线性

Python 直线打印:将x轴更改为线性,python,pandas,matplotlib,plot,axis-labels,Python,Pandas,Matplotlib,Plot,Axis Labels,我有一个熊猫数据框,看起来像: df.x = [2, 4, 16, 256] df.y = [1,2,4,16] 我想用线性x轴做一个线图,尽管x值不是线性的 当前,如果我将此数据帧绘制为df.plot(),则会得到此结果,因为x值不是线性的: 但是,上面的图表并不能正确地显示趋势。我想要这个: 请注意,X轴记号和标签是线性的,但值不是线性的 如何正确绘制图表?我尝试重新命名Xticklabel,但没有成功。您需要设置索引 df.set_index('x').y.plot() 您的索引

我有一个熊猫数据框,看起来像:

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

df.y = [1,2,4,16]
我想用线性x轴做一个线图,尽管x值不是线性的

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

但是,上面的图表并不能正确地显示趋势。我想要这个:

请注意,X轴记号和标签是线性的,但值不是线性的


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

您需要
设置索引

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

您的索引(
X
轴)似乎属于
对象(字符串)数据类型)-打印前将其转换为数字数据类型

演示:

[99]中的
:df.index.dtype

Out[99]:dtype('O')#@Dev基于示例数据,这应该是okI正在对原始数据执行pivot_表,该表正在更改索引。所以首先我必须做:df.reset_index()。重命名_轴(无,轴=1),然后对结果数据帧执行set_index()。我想我做错了什么。不应该这么复杂。
In [99]: df.index.dtype
Out[99]: dtype('O')   # <----- NOTE !
In [100]: df.plot()
Out[100]: <matplotlib.axes._subplots.AxesSubplot at 0xe74e278>
In [101]: df.set_index(pd.to_numeric(df.index, errors='coerce')).plot()
Out[101]: <matplotlib.axes._subplots.AxesSubplot at 0xadd94e0>