【问题标题】:How to name and color different traces plotly graph objects?如何为不同的轨迹命名和着色?
【发布时间】:2021-04-20 11:20:12
【问题描述】:

我在使用 plotly 图形对象时遇到以下问题: 我目前正在使用航空公司数据。 我的目标是创建一个气泡图/散点图,我可以在其中显示他们需要哪家航空公司、走了多远以及需要多少航班。

问题是,我无法获得正确匹配图例的点。

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 和粉红色而不是紫色..

那么我该如何更改它,让所有积分都匹配正确的航空公司?

【问题讨论】:

    标签: python pandas dataframe plotly-python


    【解决方案1】:

    创建图表的数据已正确创建,因此请替换它。在散点图的循环过程中指定航空公司名称。

    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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-20
      • 2021-02-05
      • 1970-01-01
      • 2012-04-15
      • 2018-09-01
      • 1970-01-01
      • 2016-11-28
      • 1970-01-01
      相关资源
      最近更新 更多