为柱状图中的痕迹写一个函数[英] Write a function for traces in a bar chart

本文是小编为大家收集整理的关于为柱状图中的痕迹写一个函数的处理方法,想解了为柱状图中的痕迹写一个函数的问题怎么解决?为柱状图中的痕迹写一个函数问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我创建了一个数据透视表:

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)])

上面的代码给了我一个无效语法的错误.

推荐答案

为了大家更好的理解,我创建了一个例子:

# 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 循环来获取 data 中的所有 traces.您可以在这里看到两个 barmode 参数之间的区别:barstack1) barmode="stack";酒吧组2) barmode="group".

您可以创建更漂亮的图(查看官方文档了解 条形图),只需指定附加参数即可.

本文地址:https://www.itbaoku.cn/post/1727831.html