Plotly: Как подготовить визуализацию данных для изображения ниже, используя диаграмму разброса пузырьков? - PullRequest
0 голосов
/ 04 мая 2020

Вот мой набор данных после очистки CSV-файла

enter image description here

Вот вывод того, что я хочу

enter image description here

Что мне нужно, так это то, что я должен отображать годы по оси x и значения столбцов по оси y.И я хочу отображать пузырьки разных цветов и размеров с помощью кнопки анимации воспроизведения

Я новичок в науке о данных, кто-то может мне помочь, как мне этого добиться?

1 Ответ

0 голосов
/ 05 мая 2020

Судя по вашему набору данных и приложенному изображению, то, что вы просите , выглядит примерно так:

enter image description here

Но Я не уверен, что это то, что вы на самом деле хотите . Видите ли, с вашим конкретным набором данных недостаточно измерений, чтобы оправдать анимацию. Или даже пузырьковый сюжет. Это потому, что вы смотрите только на значение one . Таким образом, в итоге вы показываете одно и то же значение через размеры пузырьков и по оси y. И действительно, нет необходимости изменять ваш набор данных, учитывая, что предоставленный вами скриншот фактически является вашим желаемым графиком. Но мы можем поговорить об этом подробнее, если хотите.

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

enter image description here

Полный код:

# imports
import plotly.graph_objects as go
import plotly.express as px
import pandas as pd
import math
import numpy as np

# color cycle
colors = px.colors.qualitative.Alphabet*10

# sample data with similar structure as OP
df = px.data.gapminder().query("continent=='Americas'")
dfp=df.pivot(index='year', columns='country', values='pop')
dfp=dfp[['United States', 'Mexico', 'Argentina', 'Brazil', 'Colombia']]
dfp=dfp.sort_values(by='United States', ascending = False)
dfp=dfp.T
dfp.columns = [str(yr) for yr in dfp.columns]
dfp = dfp[dfp.columns[::-1]].T

# build figure and add traces
fig=go.Figure()
for col, country in enumerate(dfp):
    vals = dfp[country].values
    yVals = [col]*len(vals)
    fig.add_traces(go.Scatter(

        y=yVals,
        x=dfp.index,
        mode='markers',
        marker=dict(color=colors[col],
            size=vals,
            sizemode='area',
            #sizeref=2.*max(vals)/(40.**2),
            sizeref=2.*max(dfp.max())/(40.**2),
            sizemin=4),
        name = country
    ))

# edit y tick layout
tickVals = np.arange(0, len(df.columns))
fig.update_layout(
    yaxis = dict(tickmode = 'array',
                 tickvals = tickVals,
                 ticktext = dfp.columns.tolist()))


fig.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...