如何使用电子表格两列数据制作Plotly分组柱状图
解决方案
你的代码只指定了单列作为Y轴数据源,且barmode='group'需要配合区分分组的color参数才能生效,你可以选择以下两种方法实现并排分组柱状图:
方法1:使用Plotly Express实现(推荐,代码更简洁)
先通过pd.melt将宽格式的原始数据转为长格式,再通过color参数区分两类学费:
import plotly.express as px import pandas as pd import plotly.io as pio df = pd.read_csv('college_data.csv') # 宽表转长表,把两列学费转为同一列的不同分组 df_long = df.melt(id_vars='college_name', value_vars=['in-state_tuition', 'out-of-state_tuition'], var_name='tuition_type', value_name='tuition_fee') barchart = px.bar( data_frame = df_long, x = "college_name", y = "tuition_fee", color = "tuition_type", # 按学费类型区分柱子颜色 opacity = 0.9, orientation = "v", barmode = 'group', # 同个院校的两个柱子并排展示 title='Annual In-State Tuition vs Out-of-state Tuition', ) pio.show(barchart)
方法2:使用Plotly Graph Objects手动添加两个柱序列
如果不想修改原始DataFrame结构,可以手动添加两类学费的柱图:
import plotly.graph_objects as go import pandas as pd import plotly.io as pio df = pd.read_csv('college_data.csv') fig = go.Figure() # 添加州内学费柱子 fig.add_trace(go.Bar( x=df['college_name'], y=df['in-state_tuition'], name='州内学费', )) # 添加州外学费柱子 fig.add_trace(go.Bar( x=df['college_name'], y=df['out-of-state_tuition'], name='州外学费', )) fig.update_layout( barmode='group', title='Annual In-State Tuition vs Out-of-state Tuition', xaxis_title='院校名称', yaxis_title='学费金额' ) pio.show(fig)
内容的提问来源于stack exchange,提问作者QuarterlyInteresting
相关产品推荐
相关产品推荐

