23

Plotly Express允许我轻松绘制 pandas 数据框,如他们的示例中所述。我不想对 x 使用命名列,对 y 使用命名列,而是对 x 使用数据框的索引,对 y 使用命名列。

使用命名列的示例

import plotly.express as px
iris = px.data.iris()
fig = px.scatter(iris, x="sepal_width", y="sepal_length")
fig.show()

我想要什么(假的例子)

import plotly.express as px
iris = px.data.iris()
fig = px.scatter(iris, x="index", y="sepal_length")
fig.show()

这显然会抛出:

ValueError:“x”的值不是“data_frame”中列的名称。预期 ['sepal_length', 'sepal_width', 'petal_length', 'petal_width', 'species', 'species_id'] 之一但收到:索引

丑陋的修复

import plotly.express as px
iris = px.data.iris().reset_index()
fig = px.scatter(iris, x="index", y="sepal_length")
fig.show()
4

3 回答 3

31

参考:https ://plot.ly/python/px-arguments/#using-the-index-of-a-dataframe

您可以将索引作为参考显式传递。

所以在你的情况下,这将是:

import plotly.express as px
iris = px.data.iris()
fig = px.scatter(iris, x=iris.index, y="sepal_length")
fig.show()

--

奖金问题:如果iris有一个pd.MultiIndex

使用pd.MultiIndex.get_level_values.

import plotly.express as px

# dummy example for multiindex
iris = px.data.iris().set_index(['species', 'species_id', iris.index])

fig = px.scatter(
   iris, 
   x=iris.index.get_level_values(2), 
   y="sepal_length"
)

fig.show()
于 2020-02-21T06:13:14.433 回答
6

您可以简单地将其留空,如下所示:

import plotly.express as px
iris = px.data.iris()
fig = px.scatter(iris, y="sepal_length")
fig.show()
于 2019-12-27T00:44:49.170 回答
-1

您只能在 px.scatter() 的 x 和 y 参数处传递列名。似乎 iris 数据集中没有名为“index”的列。

于 2019-07-24T08:33:40.513 回答