简体   繁体   中英

Why does plotly express throw out data points on a timeline?

I have a simple dataframe with two columns. A sample is shown below, the data is available here .

   year-week  users
0    2018-22      2
1    2018-23      3
2    2018-24      4
3    2018-25      3
4    2018-26      5
..       ...    ...
69   2020-03    232
70   2020-04    226
71   2020-05    214
72   2020-06    203
73   2020-07    119

[74 rows x 2 columns]

When I try to plot those two columns with Plotly Express, it omits the data until 2019-30 .

import pandas
import plotly.express as px

df = pd.read_csv("https://pastebin.com/raw/x164p1Zp")
fig = px.line(df, x="year-week", y="users")
fig.update_layout(xaxis=dict(tickformat="%Y-%W"))
fig.show()

情节地

If I plot the same data with matplotlib, the data is shown:

import pandas
import matplotlib

df = pd.read_csv("https://pastebin.com/raw/x164p1Zp")
df.plot.line(x="year-week", y="users");

matplotlib

I cannot understand why two plotting libraries show the same data in a wildly different way.

How can I plot all the data points in Plotly Express to get a plot similar to what matplotlib shows?

Plotly does not recognize your x axis as being a date. You need to convert it explicitly to a datetime format.

Solution:

df = pd.read_csv("https://pastebin.com/raw/x164p1Zp")
# convert column to datetime, weekday needed for conversion to work
df["year-week"] = pd.to_datetime(df["year-week"] + '-0', format="%Y-%W-%w")
fig = px.line(df, x="year-week", y="users")
fig.update_layout(xaxis=dict(tickformat="%Y-%W"))
fig.show()

情节结果

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM