Напишите функцию для следов в гистограмме - PullRequest
0 голосов
/ 14 сентября 2018

Я создал сводную таблицу:

df = data.pivot_table(index='col_A', columns='col_B', values='col_C', fill_value=0)

Фрейм данных df - это фрейм данных 10 * 25. Я хочу построить все столбцы на одном графике в виде трасс. Однако было бы очень утомительно писать код для всех 25 трасс. Есть ли способ, которым я могу написать функцию, как:

import plotly.plotly as py
import plotly.tools as tls
from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot
import plotly.graph_objs as go
init_notebook_mode(connected=True)
iplot([go.Bars(x=df.index, y=df[col], name=col for col in df.columns)])

Приведенный выше код дает мне ошибку неправильного синтаксиса.

1 Ответ

0 голосов
/ 15 сентября 2018

Я создан для вашего лучшего понимания:

# import what we need
import plotly
import plotly.graph_objs as go
import pandas as pd
# Create DataFrame
df = pd.DataFrame({"A":[1,1,1,0],
                   "B":[1,1,0,0],
                   "C":[1,0,0,0]
                   })
# Convert names of columns in a list
traceslist = df.columns.tolist()
# Check list
print(traceslist)
# Create a function that will create as many traces for us as we need
def tracing(column):
   trace = go.Bar(
         x = df.index,
         y = df[column],
         # Parameters above specify what you would see if hover on any column
         name = column,
         text=column,
         textposition='auto',
         hoverinfo="x+y")
   return trace
# Create data
data = []
# Fill out data with our traces
for i in range(len(traceslist)):
   eachtrace = tracing(traceslist[i])
   data.append(eachtrace)
# Optional: create layout
layout = go.Layout(
      # Set title to plot
      title = "Bam!",
      # Choose one of the barmode below and comment another
      barmode="stack",
      #barmode="group"
      )
# Create figure with all we need to plot
fig = go.Figure(data=data, layout=layout)
# Use offline plot without connection to plotly site
plotly.offline.plot(fig, filename='Bam.html')

В приведенном выше коде просто используйте функцию для создания traces.И используя for цикл после него, чтобы получить все traces в data.Какую разницу между двумя barmode параметрами вы можете увидеть здесь: barstack 1) barmode="stack";bargroup 2) barmode="group".

Вы можете создавать гораздо более красивые графики (см. Официальные документы для гистограмма ), просто укажите дополнительные параметры.

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