Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么go.Scatter打印额外的行,而px.line没有?_Python_Plotly_Data Visualization_Plotly Python - Fatal编程技术网

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

Python 为什么go.Scatter打印额外的行,而px.line没有?,python,plotly,data-visualization,plotly-python,Python,Plotly,Data Visualization,Plotly Python,这是我的graph_对象代码- go.Figure(go.Scatter(x=continent_df.date, y=continent_df.new_cases_smoothed)) 而我的plotly express代码是- px.line(continent_df, x='date', y='new_cases_smoothed', color='continent') 为什么第一个图表会为每个大陆打印额外的直线?我已经尝试过对数据帧进行排序 continent_df.sort_

这是我的graph_对象代码-

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

而我的plotly express代码是-

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

为什么第一个图表会为每个大陆打印额外的直线?我已经尝试过对数据帧进行排序

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

(还有,我怎样才能像在第二个图形中一样对第一个图形中的每一行进行颜色编码?

如果没有正确的数据样本,我无法100%确定。但是,您的数据集似乎是一个长格式,在
Continental\u df中有多个值。新的\u cases\u平滑的
属于不同的contients。您正在使用
go.Figure(go.Scatter(x=constratine\u df.date,y=constratine\u df.new\u cases\u smooted))将所有这些值分配给一条记录道

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

但是,这里使用
px.line
可以通过使用
color='contraction'
对大陆进行分组来解决这个问题。因此,使值类别显示为唯一的轨迹

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

情节

代码
啊!这很有道理。显示为什么plotly express是一种祝福(直到您必须执行子情节)
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()