如何命名和着色不同的轨迹绘图对象?
How to name and color different traces plotly graph objects?
我在使用绘图对象时遇到以下问题:
我目前正在处理航空公司数据。
我的目标是创建一个气泡图/散点图,我可以在其中显示哪家航空公司、旅行了多远以及他们需要多少次航班。
问题是,我无法获得正确匹配图例的点数。
df = pd.read_csv(PATH, sep=',')
df_grouped_Distance_Sum = df.groupby('AIRLINE')["DISTANCE"].sum()
print(df_grouped_Distance_Sum)
df_grouped_Flights = df.groupby('AIRLINE')["counter"].sum()
print(df_grouped_Flights)
hover_text = []
for index, row in df.iterrows():
hover_text.append(('Airline: {AIRLINE}').format(AIRLINE=row['AIRLINE']))
df['hover_text'] = hover_text
# creating a dict to map the airline-names
airline_names = ['AA - American Airlines', 'AS - Alaska Airlines', 'B6 - JetBlue Airways', 'DL - Delta Air Lines Inc.', 'EV - Atlantic Southeast Airlines', 'F9 - Frontier Airlines Inc.',
'HA - Hawaiian Airlines Inc.', 'MQ - American Eagle Airlines Inc.', 'NK - Spirit Air Lines', 'OO - Skywest Airlines Inc.', 'UA - United Air Lines Inc.', 'US - US Airways Inc.', 'VX - Virgin America', 'WN - Southwest Airlines Co.']
airline_data = {airline: df.query("AIRLINE == '%s'" % airline)
for airline in airline_names}
fig = go.Figure()
for airline_name, airline in airline_data.items():
fig.add_trace(go.Scatter(y=df_grouped_Flights,
x=df_grouped_Distance_Sum, name=airline_name))
fig.update_traces(mode='markers')
fig.show()
As seen in the picture all points on the graph are named and colored as the last Airline
例如左下角的点应该是 HA - Hawaiian Airlines 和粉色而不是紫色..
那么我该如何更改它,使所有积分都与正确的航空公司匹配?
创建图表的数据已正确创建,因此请替换它。在散点图的循环过程中指定航空公司名称。
import plotly.graph_objects as go
import pandas as pd
import numpy as np
import random
airline_names = ['AA - American Airlines', 'AS - Alaska Airlines', 'B6 - JetBlue Airways', 'DL - Delta Air Lines Inc.', 'EV - Atlantic Southeast Airlines', 'F9 - Frontier Airlines Inc.',
'HA - Hawaiian Airlines Inc.', 'MQ - American Eagle Airlines Inc.', 'NK - Spirit Air Lines', 'OO - Skywest Airlines Inc.', 'UA - United Air Lines Inc.', 'US - US Airways Inc.', 'VX - Virgin America', 'WN - Southwest Airlines Co.']
df = pd.DataFrame({'AIRLINE':random.choices(airline_names, k=200),'DISTANCE':np.random.randint(500,10000,(200,))})
dfs = df.groupby('AIRLINE').agg(['count','sum'])
dfs.reset_index(inplace=True)
dfs.columns = ['AIRLINE','COUNT','DISTANCE']
fig = go.Figure()
for idx, row in dfs.iterrows():
fig.add_trace(go.Scatter(x=[row['DISTANCE']], y=[row['COUNT']], name=row['AIRLINE']))
fig.update_traces(mode='markers')
fig.show()
我在使用绘图对象时遇到以下问题: 我目前正在处理航空公司数据。 我的目标是创建一个气泡图/散点图,我可以在其中显示哪家航空公司、旅行了多远以及他们需要多少次航班。
问题是,我无法获得正确匹配图例的点数。
df = pd.read_csv(PATH, sep=',')
df_grouped_Distance_Sum = df.groupby('AIRLINE')["DISTANCE"].sum()
print(df_grouped_Distance_Sum)
df_grouped_Flights = df.groupby('AIRLINE')["counter"].sum()
print(df_grouped_Flights)
hover_text = []
for index, row in df.iterrows():
hover_text.append(('Airline: {AIRLINE}').format(AIRLINE=row['AIRLINE']))
df['hover_text'] = hover_text
# creating a dict to map the airline-names
airline_names = ['AA - American Airlines', 'AS - Alaska Airlines', 'B6 - JetBlue Airways', 'DL - Delta Air Lines Inc.', 'EV - Atlantic Southeast Airlines', 'F9 - Frontier Airlines Inc.',
'HA - Hawaiian Airlines Inc.', 'MQ - American Eagle Airlines Inc.', 'NK - Spirit Air Lines', 'OO - Skywest Airlines Inc.', 'UA - United Air Lines Inc.', 'US - US Airways Inc.', 'VX - Virgin America', 'WN - Southwest Airlines Co.']
airline_data = {airline: df.query("AIRLINE == '%s'" % airline)
for airline in airline_names}
fig = go.Figure()
for airline_name, airline in airline_data.items():
fig.add_trace(go.Scatter(y=df_grouped_Flights,
x=df_grouped_Distance_Sum, name=airline_name))
fig.update_traces(mode='markers')
fig.show()
As seen in the picture all points on the graph are named and colored as the last Airline
例如左下角的点应该是 HA - Hawaiian Airlines 和粉色而不是紫色..
那么我该如何更改它,使所有积分都与正确的航空公司匹配?
创建图表的数据已正确创建,因此请替换它。在散点图的循环过程中指定航空公司名称。
import plotly.graph_objects as go
import pandas as pd
import numpy as np
import random
airline_names = ['AA - American Airlines', 'AS - Alaska Airlines', 'B6 - JetBlue Airways', 'DL - Delta Air Lines Inc.', 'EV - Atlantic Southeast Airlines', 'F9 - Frontier Airlines Inc.',
'HA - Hawaiian Airlines Inc.', 'MQ - American Eagle Airlines Inc.', 'NK - Spirit Air Lines', 'OO - Skywest Airlines Inc.', 'UA - United Air Lines Inc.', 'US - US Airways Inc.', 'VX - Virgin America', 'WN - Southwest Airlines Co.']
df = pd.DataFrame({'AIRLINE':random.choices(airline_names, k=200),'DISTANCE':np.random.randint(500,10000,(200,))})
dfs = df.groupby('AIRLINE').agg(['count','sum'])
dfs.reset_index(inplace=True)
dfs.columns = ['AIRLINE','COUNT','DISTANCE']
fig = go.Figure()
for idx, row in dfs.iterrows():
fig.add_trace(go.Scatter(x=[row['DISTANCE']], y=[row['COUNT']], name=row['AIRLINE']))
fig.update_traces(mode='markers')
fig.show()