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