网站解析什么意思,精品课程网站建设 碧辉腾乐,网站页面一般做多大,手机商城怎么下载学习笔记#xff1a;使用 pandas 和 Seaborn 绘制柱状图
前言
今天在使用 pandas 对数据进行处理并在 Python 中绘制可视化图表时#xff0c;遇到了一些关于字体设置和 Seaborn 主题覆盖的小问题。这里将学习到的方法和注意事项做个总结#xff0c;以便之后的项目中可以快…学习笔记使用 pandas 和 Seaborn 绘制柱状图
前言
今天在使用 pandas 对数据进行处理并在 Python 中绘制可视化图表时遇到了一些关于字体设置和 Seaborn 主题覆盖的小问题。这里将学习到的方法和注意事项做个总结以便之后的项目中可以快速上手和排错。 一、设置 Matplotlib 字体
在 Python 中Matplotlib 绘图时默认使用的英文字体不支持中文如果直接渲染中文往往会显示成方块或乱码。为了解决这个问题我们可以通过修改 rcParams 来设置一个支持中文的字体例如 SimHei黑体或 Microsoft YaHei。
下面是一段简单的函数用于快速切换中文字体
def set_chinese_font(font_nameSimHei):设置Matplotlib的中文字体。:param font_name: 字体名称默认使用SimHei。其他常见中文字体如Microsoft YaHei。import matplotlib.pyplot as pltplt.rcParams[font.sans-serif] [font_name] # 设置中文字体plt.rcParams[axes.unicode_minus] False # 正常显示负号注意如果系统中没有安装对应字体设置可能不会生效。可以自行在系统如 Windows 的 C:\Windows\Fonts安装相应的字体文件。 二、Seaborn 与 Matplotlib 主题的冲突
很多时候我们还会喜欢使用 Seaborn 自带的主题来让图表看起来更美观例如
import seaborn as sns
sns.set(stylewhitegrid)然而一些版本的 Seaborn 可能会覆盖你在 Matplotlib 中设置的字体或者你在不同地方多次调用不同的主题也可能引发冲突。常见解决方法是要么只使用 Seaborn 的主题而不手动改字体要么先调用 Seaborn 的主题再调用中文字体让中文字体占最终优先级。
例如如果你想保留白色网格风格但又希望用黑体显示中文可以这样写
import seaborn as sns
sns.set(stylewhitegrid)# 然后设置中文字体
set_chinese_font(SimHei)如果两者仍然冲突建议去掉其中一个或尝试删除 Matplotlib 缓存让它重新扫描系统字体。 三、Seaborn barplot 的工作原理
在使用 Seaborn 绘制柱状图时常见用法是
import seaborn as snsbar_plot sns.barplot(x学院,y人数,datacollege_counts,paletteviridis
)不需要再手动把 bar_plot “放进” Matplotlib因为 Seaborn 会自动在当前的 Matplotlib Figure 中生成 Axes返回给我们的是一个已经绑定到该 Figure 的对象。因此只要最后 plt.show() 或 plt.savefig()就能看到或保存这张图表。
1. 同一个坐标多个柱状同一个 x 有多个柱子
当我们想要在同一个 x 值下显示多个柱子例如同一个学院下分别统计“参保”和“未参保”人数可以使用 hue 参数
bar_plot sns.barplot(x学院,y人数,datagrouped_df,hue2025年参保情况, # 在同一个学院里区分参保和未参保paletteviridis,dodgeTrue, # True:并排放置False:重叠放置legendTrue # 是否显示图例
)关键参数说明 x学院: 横轴分组依据。每个学院在 x 轴上有一个刻度。 hue2025年参保情况: 同一个学院如何再细分颜色。因为 grouped_df 里有一列 “2025年参保情况” (参保 / 未参保)Seaborn 就会在同一个 x 刻度下绘制两根柱子并用不同的颜色。 dodgeTrue: 当同一个 x 有多个柱子时并排显示。如果改成 False则会把这些柱子重叠绘制。 dodge意味躲避 true时 false时 legendTrue: 是否显示图例。因为我们有 hue所以图例可以帮我们标识不同颜色所对应的“参保” / “未参保”。
2. 如何得到 grouped_df
通常我们会有一个 DataFrame 包含诸如“学院”、“2025年参保情况”、“姓名”等列。要得到分组后的每组人数可以这样
grouped_df df.groupby([学院, 2025年参保情况]).size().reset_index(name人数)groupby([学院, 2025年参保情况])先按“学院”和“参保情况”分组.size()求出每个分组内行数即人数.reset_index(name人数)把分组索引转换为普通列并将这个计数列重命名为“人数”
然后 grouped_df 就可以拿来给 Seaborn 的 barplot 使用了。 四、总结 字体设置与 Seaborn 主题冲突 要么只用一方要么先 sns.set(...)再 set_chinese_font(...)。 Seaborn barplot 与 Matplotlib Seaborn 自动把数据绘制到当前图中不需要显式地“放进” Matplotlib只需 plt.show() 或 plt.savefig() 查看或保存结果。 一个横坐标多个柱状图 通过设置 hue... 参数告诉 Seaborn 在同一 x 类别下再细分颜色。dodgeTrue 为并排不会重叠dodgeFalse 则重叠显示。 分组汇总 借助 groupby() size()或 count()、sum()等做聚合再用 reset_index 转换成列形式是一条非常重要的分析路径。
通过这些技巧我们就可以轻松地使用 pandas Seaborn 绘制各种各样的统计图表展示数据中的分类情况、分布情况以及关系满足日常数据分析与可视化需求。 延伸阅读 Seaborn 官方文档: https://seaborn.pydata.org/Matplotlib 字体管理: https://matplotlib.org/stable/tutorials/text/text_props.htmlpandas 文档: https://pandas.pydata.org/docs/ 至此今天的学习心得就整理完毕啦 希望这篇笔记能帮你更快掌握在 Python 中处理中文显示、使用 Seaborn 绘制柱状图以及在同一个坐标轴上并排展示多个柱子的技巧。祝你在数据可视化之路上更进一步