seaborn笔记

http://blog.youkuaiyun.com/qq_34264472/article/details/53814653

转载于:https://www.cnblogs.com/imageSet/p/8017630.html

<think> 我们有两组数据:第一组(0行)为五月34,六月33,七月40;第二组(1行)为五月14,六月18,七月23。 使用seaborn绘制分组柱状图,我们需要将数据整理为长格式(long format),包含三列:月份、组别(0或1)、数值。 然后使用seaborn的barplot函数,x轴为月份,y轴为数值,hue为组别。 步骤: 1. 创建数据框(DataFrame): 月份: ['五月','五月','六月','六月','七月','七月'] 组别: [0, 1, 0, 1, 0, 1] 数值: [34, 14, 33, 18, 40, 23] 2. 设置seaborn样式 3. 使用sns.barplot绘图,并设置x='月份', y='数值', hue='组别' 4. 添加标题、数据标签等 注意:seaborn的barplot会自动计算置信区间并绘制误差线,但我们这里不需要误差线(设置ci=None)。此外,由于数据是确定的,我们也可以添加数据标签。 参考引用[3]中的样式设置,我们可以设置一个合适的样式。 另外,引用[1]提到seaborn的figure级函数和axes级函数,barplot是axes级的,所以我们可以结合matplotlib的plt.subplots来创建画布。 由于数据量不大,我们可以直接使用barplot,然后通过循环添加数据标签。 具体代码如下: </think> 我将使用 Seaborn 绘制五月、六月、七月数据的柱状图,具体实现如下: ```python import seaborn as sns import matplotlib.pyplot as plt import pandas as pd # 数据准备 data = pd.DataFrame({ '月份': ['五月', '五月', '六月', '六月', '七月', '七月'], '组别': ['0', '1', '0', '1', '0', '1'], '数值': [34, 14, 33, 18, 40, 23] }) # 设置Seaborn样式 sns.set(context='notebook', # 画幅大小 style='whitegrid', # 网格样式 palette='muted', # 调色板 font='SimHei', # 中文字体 font_scale=1.2) # 字体缩放比例 # 创建图表 plt.figure(figsize=(10, 6)) ax = sns.barplot(x='月份', y='数值', hue='组别', data=data, ci=None, palette=['#3498db', '#e74c3c']) # 添加标题和标签 plt.title('五月至七月数据对比', fontsize=16, pad=20) plt.xlabel('月份', fontsize=14) plt.ylabel('数值', fontsize=14) # 添加数据标签 for p in ax.patches: ax.annotate(f"{p.get_height():.0f}", (p.get_x() + p.get_width() / 2., p.get_height()), ha='center', va='center', fontsize=12, color='black', xytext=(0, 8), textcoords='offset points') # 调整图例 plt.legend(title='数据组别', loc='upper right') # 优化布局 plt.tight_layout() plt.show() ``` ### 图表说明: 1. **数据结构**: - 使用长格式数据:包含"月份"、"组别"和"数值"三列 - 组别"0"对应原始数据的第一行(五月34、六月33、七月40) - 组别"1"对应原始数据的第二行(五月14、六月18、七月23) 2. **Seaborn样式设置**: - `context='notebook'`:适合笔记本显示的画幅大小 - `style='whitegrid'`:白色背景+网格线,提高可读性 - `palette='muted'`:柔和的调色板 - `font='SimHei'`:确保中文字符正常显示[^3] 3. **可视化效果**: - 分组柱状图清晰展示每月两组数据的对比 - 数据标签直接显示在柱子上方 - 蓝色表示组别0,红色表示组别1 - 网格线辅助数值读取 ### 扩展建议: 1. **调整分组位置**: ```python # 设置dodge=False使柱子重叠显示 sns.barplot(..., dodge=False) ``` 2. **添加误差线**: ```python # 当有多个样本时,显示标准差 sns.barplot(..., ci='sd') ``` 3. **水平柱状图**: ```python # 交换x和y轴变量 sns.barplot(x='数值', y='月份', hue='组别', data=data, orient='h') ``` Seaborn 的 `barplot` 函数会自动计算聚合统计量(默认显示均值),并提供丰富的样式配置选项,使数据对比更加直观[^1][^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值