为什么 go.Scatter 打印额外的行,而 px.line 却没有?

2023-12-03

这是我的 graph_objects 代码-

go.Figure(go.Scatter(x=continent_df.date, y=continent_df.new_cases_smoothed))

enter image description here

而我的情节表达代码是这样的 -

px.line(continent_df, x='date', y='new_cases_smoothed', color='continent')

enter image description here

为什么第一张图为每个大陆打印了额外的直线?我已经尝试对数据框进行排序。

continent_df.sort_values(['continent','date'], inplace=True)

(另外,如何像第二个图中那样对第一个图中的每一行进行颜色编码?)


如果没有正确的数据样本,我无法 100% 确定。但您的数据集似乎是长格式,其中包含多个值continent_df.new_cases_smoothed属于不同的大陆。您可以使用以下命令将所有这些值分配给一个跟踪go.Figure(go.Scatter(x=continent_df.date, y=continent_df.new_cases_smoothed)).

之所以有直线,是因为只有一条线来回走动,涵盖了所有类别和所有索引。当返回到开头并开始显示新类别时,会出现直线的直线部分

然而,使用px.line这里通过使用以下方法对各大洲进行分组来解决这个问题color='continent'。从而使价值类别表现为独特的痕迹。

我们可以使用 gapminder 数据集(其结构与现实世界数据类似)来说明如何将各个迹线分配给go.Figure using fig.add_traces(go.Scatter())。关键是检索唯一的类别、对数据进行子集化并逐行添加组。与使用相比,这无疑为您提供了更大的灵活性px.line.

Plot

enter image description here

Code

import plotly.graph_objs as go
import plotly.express as px
import pandas as pd

# Data
gap = px.data.gapminder()

fig = go.Figure()
for c in gap['country'].unique()[:10]:
    df = gap[gap['country']==c]
    fig.add_traces(go.Scatter(x=df['year'], y = df['lifeExp'], name = c))
    
fig.show()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 go.Scatter 打印额外的行,而 px.line 却没有? 的相关文章

随机推荐