使用 Pandas DataFrame 绘图并将其与另一个绘图并排显示

3

有选项可以让图表并排显示,同样适用于pandas数据框。是否有一种方法可以将pandas数据框和一个图表并排绘制?

这是我目前的代码,但数据框被扭曲了。


import pandas as pd
import matplotlib.pyplot as plt
from pandas.plotting import table

# sample data
d = {'name': ['Jason', 'Molly', 'Tina', 'Jake', 'Amy'],
     'jan': [4, 24, 31, 2, 3],
     'feb': [25, 94, 57, 62, 70],
     'march': [5, 43, 23, 23, 51]}
df = pd.DataFrame(d)
df['total'] = df.iloc[:, 1:].sum(axis=1)

plt.figure(figsize=(16,8))

# plot table
ax1 = plt.subplot(121)
plt.axis('off')
tbl = table(ax1, df, loc='center')
tbl.auto_set_font_size(False)
tbl.set_fontsize(14)

# pie chart
ax2 = plt.subplot(122, aspect='equal')
df.plot(kind='pie', y = 'total', ax=ax2, autopct='%1.1f%%', 
 startangle=90, shadow=False, labels=df['name'], legend = False, fontsize=14)


plt.show()

Side by Side


如果当前的输出结果能够改进,您希望如何满意呢?是希望在垂直尺寸上与饼图和表格相匹配吗? - undefined
一些事情。让pandas DataFrame以通常的方式呈现,就像它单独显示时一样,并与图形对齐。 - undefined
1个回答

3

使用plotlymake_subplots()非常简单

  • 使用适当的specs参数定义图形
  • add_trace()添加来自您数据框的表格数据
  • add_trace()添加来自您数据框的饼图
import pandas as pd
import plotly.express as px
import plotly.graph_objects as go
from plotly.subplots import make_subplots

# sample data
d = {'name': ['Jason', 'Molly', 'Tina', 'Jake', 'Amy'],
     'jan': [4, 24, 31, 2, 3],
     'feb': [25, 94, 57, 62, 70],
     'march': [5, 43, 23, 23, 51]}
df = pd.DataFrame(d)
df['total'] = df.iloc[:, 1:].sum(axis=1)


fig = make_subplots(rows=1, cols=2, specs=[[{"type":"table"},{"type":"pie"}]])
fig = fig.add_trace(go.Table(cells={"values":df.T.values}, header={"values":df.columns}), row=1,col=1)
fig.add_trace(px.pie(df, names="name", values="total").data[0], row=1, col=2)

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接