Любой способ изменить режим размера непосредственно в plotlyexpress

#python #plotly #plotly-python

#python #plotly #plotly-python

Вопрос:

У меня есть пузырьковая диаграмма plotly, где я не уверен, использует ли она диаметр или площадь для указания размера пузырька. Краткий Google сказал мне, что по умолчанию используется диаметр, и мне сказали, что люди склонны воспринимать размер по площади? (Поправьте меня, если я ошибаюсь, но это именно то, что мне рассказывали на лекциях.) Таким образом, я пытаюсь найти способ изменить sizemode на area, однако, похоже, не могу этого сделать в plotly express. На данный момент это мой код для справки.

 import plotly.express as px
fig = px.scatter(data_frame = df, x="hf_score", y="Happiness.Score",
             size="GNI_capita", color="region", hover_name="countries", size_max=60,
             labels={
                 "hf_score" : "Human Freedom Index 2017 (0-10)",
                 "Happiness.Score" : "Happiness Score 2017 (0-10)",
                 "GNI_capita" : "GNI/capita 2017 by Atlas Method ($USD)",
                 "region" : "World Bank Region"
             },
             title="Happiness amp; Freedom Score by Region amp; GNI/capita")
  

Редактировать:

Используемый набор данных: https://github.com/mattshu0410/data-1002-project/blob/master/merged_data.csv

Изображение создано: Текущий график

Комментарии:

1. Похоже, что в режиме размера в badly.express, похоже, нет никаких изменений в режиме размера, если да, то как насчет преобразования диаметра в площадь как size = x / 2 * x / 2 *pi. plotly.go может использовать sizemode=’area’, так что попробуйте. эта страница

2. Я только что добавил следующий код, но, похоже, это ничего не изменило. Есть идеи, почему? fig.update(data=dict( marker = [go.scatter.Marker(sizemode="diameter")] ))

3. В документации говорится, что вам нужен числовой массив, поэтому, я думаю, вам нужен список областей.

4. Честно говоря, я абсолютный новичок, и я изо всех сил пытаюсь понять, как я мог бы иметь непрерывные данные, такие как ВНД / на душу населения, и отображать размер пузырька в зависимости от площади. Если я передам числовой массив, не буду ли я вынужден привязать свой ВНД?

5. Предоставление образцов данных или графиков, созданных в это время, облегчит получение ответов от большего количества людей.

Ответ №1:

Отобразите обновленные данные с go.scatter помощью . Если вы не используете sizeref= , пузырь сжимается, sizeref= чтобы сделать его больше. Я не могу все приукрашивать, потому что у меня нет времени, но я думаю, что у меня есть скелет.

 import plotly.graph_objects as go

size = df['GNI_capita'].tolist()
fig = go.Figure(data=[go.Scatter(x=df["hf_score"],
                                 y=df["Happiness.Score"],
                                 mode='markers',
                                 marker=dict(color=size,
                                             size=size,
                                             sizemode='area',
                                             sizeref=2.*max(size)/(40.**2))
                                )])

fig.show()
  

введите описание изображения здесь