Use Pandas index in Plotly Express
Solution 1
Reference: https://plot.ly/python/px-arguments/#using-the-index-of-a-dataframe
You can pass the index as reference explicitly.
So in your case, this would be:
import plotly.express as px
iris = px.data.iris()
fig = px.scatter(iris, x=iris.index, y="sepal_length")
fig.show()
--
BONUS QUESTION: what if iris
has a pd.MultiIndex
?
Use 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()
Solution 2
You can simply leave it blank, like so:
import plotly.express as px
iris = px.data.iris()
fig = px.scatter(iris, y="sepal_length")
fig.show()
Comments
-
Laurens Koppenol about 4 years
Plotly Express allows me to easily plot a pandas dataframe, as explained in their examples. Rather than using a named column for x and a named column for y, I would like to use the dataframe's index for x and a named column for y.
Example using named columns
import plotly.express as px iris = px.data.iris() fig = px.scatter(iris, x="sepal_width", y="sepal_length") fig.show()
What i want (bogus example)
import plotly.express as px iris = px.data.iris() fig = px.scatter(iris, x="index", y="sepal_length") fig.show()
This obviously throws:
ValueError: Value of 'x' is not the name of a column in 'data_frame'. Expected one of ['sepal_length', 'sepal_width', 'petal_length', 'petal_width', 'species', 'species_id'] but received: index
Ugly fix
import plotly.express as px iris = px.data.iris().reset_index() fig = px.scatter(iris, x="index", y="sepal_length") fig.show()
-
nicolaskruchten almost 5 yearsYour 'ugly fix' is the recommended approach today :)
-
StefanQ over 4 years@nicolaskruchten With my own data (pandaframes resuting from some web scraping) I found the "ugly fix" to be the way to go, too. Hence, I'd suggest making your answer (together with a link to some official documentation (I found nothing on that case)) the official answer.
-
nicolaskruchten over 4 years@StefanQ I'm hoping to actually add support for this kind of thing in the next few weeks :)
-
Laurens Koppenol over 4 yearsFeel free to post your above remarks as answer and I will mark it accordingly. Makes it easy for you to keep the community up to date!
-
-
Laurens Koppenol almost 5 yearsThanks for your reply. This is what I wanted to point out with my bogus example.
-
Christian Aichinger about 4 yearsThis does not use the index for the x axis! It uses
range(iris.index.size)
as X axis. -
Eulenfuchswiesel almost 4 yearsDoes this also work with a DatetimeIndex? I am having some difficulties with this issue at the moment
-
soungalo almost 4 yearsNote that this geature has been added somewhere after plotly version 4.1 (had to update for this to work).