Добавить несколько текстовых меток из столбцов DataFrame в Plotly - PullRequest
0 голосов
/ 25 января 2019

Цель состоит в том, чтобы построить некоторые данные, используя plotly, где текстовый параметр содержит несколько столбцов.

Вот мой DataFrame:

import pandas as pd
import numpy as np
import plotly as py
import plotly.graph_objs as go

np.random.seed(1)
df = pd.DataFrame({'Mean Age': np.random.randint(40,60,10),
                   'Percent': np.random.randint(20,80,10),
                   'Number Column': np.random.randint(100,500,10)},
                  index=list('ABCDEFGHIJ'))

df.index.name = 'Text Column'
df = df.sort_values('Mean Age')

Вот пример того, как я построил графикданные с текстом из одного столбца для отображения при наведении:

# trace for Percent
trace0 = go.Scatter(
    x = df.index,
    y = df['Percent'],
    name = 'Percent',
    text = df['Mean Age'], # text to show on hover from df column
    mode = 'lines+markers',
    line = dict(
        color = ('rgb(0,0,255)'), # blue
        width = 4)
)

layout = dict(title = 'Test Plot',
             xaxis = dict(title = 'Text Column'),
             yaxis = dict(title = 'Percent'),
              )

data = [trace0]
fig = dict(data=data, layout=layout)

py.offline.plot(fig, filename = 'Test_Plot.html')

Я хочу добавить данные другого столбца к текстовому параметру.Я могу сделать это, выполнив некоторые списки, но есть ли более простой / эффективный способ сделать это?

Я ищу вывод, похожий на то, что ниже, но более эффективным способом, чем использование списков:

# column values to list
num = list(df['Number Column'])
age = list(df['Mean Age'])


# trace for Percent
trace0 = go.Scatter(
    x = df.index,
    y = df['Percent'],
    name = 'Percent',
    # list comprehension to get the data to show
    text = [f'Number Column: {x}; Mean Age: {y}' for x,y in list(zip(num, age))],
    mode = 'lines+markers',
    line = dict(
        color = ('rgb(0,0,255)'), # blue
        width = 4)
)

layout = dict(title = 'Test Plot',
             xaxis = dict(title = 'Text Column'),
             yaxis = dict(title = 'Percent'),
              )

data = [trace0]
fig = dict(data=data, layout=layout)

py.offline.plot(fig, filename = 'Test_Plot_Output.html')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...