Как можно построить пузырьковую диаграмму из фрейма данных, созданного из кросс-таблицы pandas другого фрейма данных?
Imports;
import plotly as py
import plotly.graph_objects as go
from plotly.subplots import make_subplots
Кросс-таблица была создана с использованием;
df = pd.crosstab(raw_data['Speed'], raw_data['Height'].fillna('n/a'))
ДФ в основном содержит нули, однако, где появляется число, я хочу точку, где значение контролирует размер точки. Я хочу установить значения индекса в качестве оси x, а значения имен столбцов в качестве оси Y.
df будет выглядеть примерно так:
10 20 30 40 50
1000 0 0 0 0 5
1100 0 0 0 7 0
1200 1 0 3 0 0
1300 0 0 0 0 0
1400 5 0 0 0 0
Я пробовал использовать scatter & Scatter, подобный этому;
fig.add_trace(go.Scatter(x=df.index.values, y=df.columns.values, size=df.values,
mode='lines'),
row=1, col=3)
Возвращает объект TypeError: объект 'Module' не вызывается.
Любая помощь действительно приветствуется. Спасибо
ОБНОВЛЕНИЕ
Ответы ниже близки к тому, что я закончил, главное отличие в том, что я ссылаюсь на «Скорость» в линии расплава;
df.reset_index()
df.melt(id_vars="Speed")
df.rename(columns={"index":"Engine Speed",
"variable":"Height",
"value":"Count"})
df[df!=0].dropna()
scale=1000
fig.add_trace(go.Scatter(x=df["Speed"], y=df["Height"],mode='markers',marker_size=df["Count"]/scale),
row=1, col=3)
Это работает, однако моя главная проблема сейчас в том, что набор данных огромен, и сюжет действительно пытается справиться с ним.
Обновление 2
Использование Scattergl позволяет Plotly очень хорошо справляться с большим набором данных!