比较(一)利用python绘制条形图
条形图(Barplot)简介
条形图主要用来比较不同类别间的数据差异,一条轴表示类别,另一条则表示对应的数值度量。
快速绘制
-
基于seaborn
import seaborn as sns import matplotlib.pyplot as plt # 导入数据 tips = sns.load_dataset("tips") # 利用barplot函数快速绘制 sns.barplot( x="total_bill", y="day", data=tips, estimator=sum, errorbar=None, color='#69b3a2') plt.show()
-
基于matplotlib
import matplotlib.pyplot as plt # 导入数据 tips = sns.load_dataset("tips") grouped_tips = tips.groupby('day')['total_bill'].sum().reset_index() # 利用bar函数快速绘制 plt.bar(grouped_tips.day, grouped_tips.total_bill) plt.show()
-
基于pandas
import matplotlib.pyplot as plt import pandas as pd # 导入数据 tips = sns.load_dataset("tips") grouped_tips = tips.groupby('day')['total_bill'].sum().reset_index() # 利用plot.bar函数快速绘制 grouped_tips.plot.bar(x='day', y='total_bill', rot=0) plt.show()
定制多样化的条形图
自定义条形图一般是结合使用场景对相关参数进行修改,并辅以其他的绘图知识。参数信息可以通过官网进行查看,其他的绘图知识则更多来源于实战经验,大家不妨将接下来的绘图作为一种学习经验,以便于日后总结。
通过seaborn绘制多样化的条形图
seaborn主要利用barplot
绘制条形图,可以通过seaborn.barplot了解更多用法
-
修改参数
import seaborn as sns import matplotlib.pyplot as plt import numpy as np sns.set(font='SimHei', font_scale=0.8, style="darkgrid") # 解决Seaborn中文显示问题 # 导入数据 tips = sns.load_dataset("tips") # 构造子图 fig, ax = plt.subplots(2,2,constrained_layout=True, figsize=(8, 8)) # 修改方向-垂直 ax_sub = sns.barplot( y="total_bill", x="day", data=tips, estimator=sum, errorbar=None, color='#69b3a2', ax=ax[0][0] ) ax_sub.set_title('垂直条形图') # 自定义排序 ax_sub = sns.barplot( y="total_bill", x="day", data=tips, estimator=sum, errorbar=None, color='#69b3a2', order=["Fri","Thur","Sat","Sun"], ax=ax[0][1] ) ax_sub.set_title('自定义排序') # 数值排序 df = tips.groupby('day')['total_bill'].sum().sort_values(ascending=False).reset_index() ax_sub = sns.barplot( y="day", x="total_bill", data=df, errorbar=None, color='#69b3a2', order=df['day'], ax=ax[1][0] ) ax_sub.set_title('数值排序') # 添加误差线 ax_sub = sns.barplot( x="day", y="total_bill", data=tips, estimator=np.mean, errorbar=('ci', 85), capsize=.2, color='lightblue', ax=ax[1][1] ) ax_sub.set_title('添加误差线') plt.show()
-
分组条形图
import seaborn as sns import matplotlib.pyplot as plt import numpy as np sns.set(style="darkgrid") # 导入数据 tips = sns.load_dataset("tips") fig, ax = plt.subplots(figsize=(4, 4)) # 分组条形图 colors = ["#69b3a2", "#4374B3"] sns.barplot(x="day", y="total_bill", hue="smoker", data=tips, errorbar=None, palette=colors) plt.show() # 分组/子分组条形图 sns.catplot(x="sex", y="total_bill"