条形图主要展现的是每个矩形高度的数值变量的中心趋势的估计。 注:条形图只显示平均值(或其他估计值)。但在很多情况下,每个分类变量级别上显示值的分布可能提供更多信息,此时很多其他方法,如一个盒子或小提琴图可能更合适。
案例代码已上传:Github地址
import seaborn as sns import matplotlib.pyplot as plt # 设置样式风格 sns.set(style="darkgrid") # 构建数据 tips = sns.load_dataset("tips") """ 案例1: 指定x分类变量进行分组,指定 y为数据分布,绘制垂直条形图 """ sns.barplot(x="day", y="total_bill", data=tips) plt.show() import seaborn as sns import matplotlib.pyplot as plt # 设置样式风格 sns.set(style="darkgrid") # 构建数据 tips = sns.load_dataset("tips") """ 案例2: 指定hue对已分组的数据进行嵌套分组(第二次分组)并绘制条形图 """ sns.barplot(x="day", y="total_bill", hue="sex", data=tips) plt.show() import seaborn as sns import matplotlib.pyplot as plt # 设置样式风格 sns.set(style="darkgrid") # 构建数据 tips = sns.load_dataset("tips") """ 案例3: 指定 y 为分类变量进行分组,x 为数据分布 (这样的效果相当于水平条形图) """ sns.barplot(x="tip", y="day", data=tips) plt.show() import seaborn as sns import matplotlib.pyplot as plt # 设置样式风格 sns.set(style="darkgrid") # 构建数据 tips = sns.load_dataset("tips") """ 案例4: 设置order=["变量名1","变量名2",...]来显示指定分类顺序 """ sns.barplot(x="time", y="tip", data=tips, order=["Dinner", "Lunch"]) plt.show() import seaborn as sns import matplotlib.pyplot as plt from numpy import median # 设置样式风格 sns.set(style="darkgrid") # 构建数据 tips = sns.load_dataset("tips") """ 案例5: 使用中位数作为集中趋势的估计:estimator=median """ sns.barplot(x="day", y="tip", data=tips, estimator=median) plt.show() import seaborn as sns import matplotlib.pyplot as plt from numpy import median # 设置样式风格 sns.set(style="darkgrid") # 构建数据 tips = sns.load_dataset("tips") """ 案例6: 使用误差线显示均值的标准差 """ sns.barplot(x="day", y="tip", data=tips, ci=68) plt.show() import seaborn as sns import matplotlib.pyplot as plt from numpy import median # 设置样式风格 sns.set(style="darkgrid") # 构建数据 tips = sns.load_dataset("tips") """ 案例7: 设置ci="sd" 显示观测值的标准偏差而不是置信区间 """ sns.barplot(x="day", y="tip", data=tips, ci="sd") plt.show() import seaborn as sns import matplotlib.pyplot as plt from numpy import median # 设置样式风格 sns.set(style="darkgrid") # 构建数据 tips = sns.load_dataset("tips") """ 案例8: 设置 capsize,如果capsize>0则添加 caps到错误条上,否则没有错误条 """ sns.barplot(x="day", y="tip", data=tips, capsize=.2) plt.show() import seaborn as sns import matplotlib.pyplot as plt from numpy import median # 设置样式风格 sns.set(style="darkgrid") # 构建数据 tips = sns.load_dataset("tips") """ 案例9: 使用不同的调色版:palette="Blues_d" """ sns.barplot("size", y="total_bill", data=tips, palette="Blues_d") plt.show() import seaborn as sns import matplotlib.pyplot as plt from numpy import median # 设置样式风格 sns.set(style="darkgrid") # 构建数据 tips = sns.load_dataset("tips") """ 案例10: 使用不同的调色版 """ tips["weekend"] = tips["day"].isin(["Sat", "Sun"]) sns.barplot(x="day", y="total_bill", hue="weekend", data=tips, dodge=False) plt.show() import seaborn as sns import matplotlib.pyplot as plt from numpy import median # 设置样式风格 sns.set(style="darkgrid") # 构建数据 tips = sns.load_dataset("tips") """ 案例11: 设置color指定所有bar使用同一颜色 """ sns.barplot("size", y="total_bill", data=tips, color="salmon", saturation=.5) plt.show() import seaborn as sns import matplotlib.pyplot as plt from numpy import median # 设置样式风格 sns.set(style="darkgrid") # 构建数据 tips = sns.load_dataset("tips") """ 案例12: linewidth:线宽 facecolor:封闭区域内部的颜色: facecolor=(R, G, B, A), edgecolor:边颜色 """ sns.barplot("day", "total_bill", data=tips, linewidth=2.5, facecolor=(1, 1, 1, 0), errcolor=".2",edgecolor=".3") plt.show() import seaborn as sns import matplotlib.pyplot as plt from numpy import median # 设置样式风格 sns.set(style="darkgrid") # 构建数据 tips = sns.load_dataset("tips") """ 案例13: 使用catplot()实现barplot()的效果(通过指定kind=bar) """ sns.catplot(x="sex", y="total_bill", hue="smoker", col="time", data=tips, kind="bar", height=4, aspect=.7) plt.show()上述案例代码已上传:Github地址 Github地址https://github.com/Vambooo/SeabornCN
更多技术干货在公众号:数据分析与可视化学研社