Seaborn数据可视化实战:Seaborn颜色与样式定制教程

Seaborn颜色与样式:打造个性化数据可视化

学习目标

在本课程中,我们将深入探讨Seaborn库中颜色和样式设置的技巧,学习如何通过自定义图表的颜色、线条样式、标记样式等,来增强图表的视觉效果,使数据故事更加生动和吸引人。

相关知识点

  • Seaborn颜色与样式

学习内容

1 Seaborn颜色与样式

1.1 颜色设置

颜色是数据可视化中一个非常重要的元素,它不仅能够帮助区分不同的数据集,还能增强图表的视觉吸引力。Seaborn提供了多种方式来设置图表的颜色,包括使用预定义的颜色调色板、自定义颜色以及根据数据值动态选择颜色。

安装环境依赖:

bash 复制代码
%pip install seaborn
  • 预定义的颜色调色板

    Seaborn内置了多个颜色调色板,这些调色板经过精心设计,适用于不同的数据可视化场景。例如,deep调色板适合于区分不同的数据集,而muted调色板则更加柔和,适合于展示数据的细微差异。

python 复制代码
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np


# 生成模拟数据,这里分为三个类别
n_samples = 100
np.random.seed(42)

# 类别 A 的数据
category_a_size = int(n_samples * 0.3)
total_bill_a = np.random.normal(20, 5, category_a_size)
tip_a = total_bill_a * np.random.uniform(0.15, 0.2, category_a_size)

# 类别 B 的数据
category_b_size = int(n_samples * 0.4)
total_bill_b = np.random.normal(35, 7, category_b_size)
tip_b = total_bill_b * np.random.uniform(0.1, 0.15, category_b_size)

# 类别 C 的数据
category_c_size = n_samples - category_a_size - category_b_size
total_bill_c = np.random.normal(45, 3, category_c_size)
tip_c = total_bill_c * np.random.uniform(0.05, 0.1, category_c_size)

# 合并数据
total_bill = np.concatenate([total_bill_a, total_bill_b, total_bill_c])
tip = np.concatenate([tip_a, tip_b, tip_c])
categories = ['A'] * category_a_size + ['B'] * category_b_size + ['C'] * category_c_size


# 创建 DataFrame
tips = pd.DataFrame({
    "total_bill": total_bill,
    "tip": tip,
    "category": categories
})

# 使用预定义的调色板
sns.set_palette("deep")
sns.scatterplot(x="total_bill", y="tip", data=tips)
plt.title("Using the predefined color palette")
plt.xlabel("Total Bill")
plt.ylabel("Tip")
plt.show()
  • 自定义颜色

    除了使用预定义的调色板,Seaborn还允许用户自定义颜色。这可以通过直接指定颜色值(如十六进制颜色代码)或使用颜色名称来实现。自定义颜色可以更好地匹配特定的设计需求或品牌色彩。

python 复制代码
# 自定义颜色
custom_palette = ["#FF5733", "#33FF57", "#3357FF"]
sns.set_palette(custom_palette)
sns.scatterplot(x="total_bill", y="tip", data=tips)
plt.title("Use custom colors")
plt.show()
  • 根据数据值动态选择颜色

    在某些情况下,我们可能希望根据数据值的变化来动态选择颜色。Seaborn通过hue参数支持这一功能,可以将颜色映射到数据中的某个变量,从而更直观地展示数据的分布和关系。

python 复制代码
# 根据数据值动态选择颜色
sns.scatterplot(x="total_bill", y="tip", hue="category", data=tips)
plt.title("Dynamically select colors based on data values")
plt.show()

1.2 线条与标记样式

除了颜色,线条样式和标记样式也是图表中重要的视觉元素。通过调整这些样式,可以进一步增强图表的可读性和美观度。

  • 线条样式

Seaborn支持多种线条样式,包括实线、虚线、点划线等。这些样式可以通过linestyle参数进行设置。不同的线条样式可以用于区分不同的数据集或表示不同的数据特征。

python 复制代码
# 线条样式
sns.lineplot(x="total_bill", y="tip", data=tips, linestyle="--")
plt.title("Use dashed line style")
plt.show()
  • 标记样式

    标记样式用于在散点图中表示数据点。Seaborn提供了多种标记样式,如圆形、方形、三角形等。这些样式可以通过marker参数进行设置,不同的标记样式可以用于区分不同的数据集或表示不同的数据特征。

python 复制代码
# 标记样式
sns.scatterplot(x="total_bill", y="tip", data=tips, marker="s")
plt.title("Use square markers")
plt.show()

1.3 主题与样式表

Seaborn不仅提供了丰富的颜色和样式设置选项,还支持多种预定义的主题和样式表。这些主题和样式表可以快速改变图表的整体外观,使其更加符合特定的设计需求或场合。

  • 预定义的主题

Seaborn提供了几个预定义的主题,如darkgrid、whitegrid、dark、white和ticks。这些主题通过调整背景颜色、网格线等元素,可以快速改变图表的视觉风格。

python 复制代码
# 使用预定义的主题
sns.set_theme(style="darkgrid")
sns.scatterplot(x="total_bill", y="tip", data=tips)
plt.title("Use the darkgrid theme")
plt.show()
  • 自定义样式表

除了使用预定义的主题,Seaborn还允许用户自定义样式表。这可以通过rc参数来实现,用户可以设置各种绘图参数,如字体大小、线条宽度等,以满足特定的设计需求。

python 复制代码
# 自定义样式表
sns.set_theme(style="whitegrid", rc={"lines.linewidth": 2.0, "font.size": 14})
sns.scatterplot(x="total_bill", y="tip", data=tips)
plt.title("Use a custom style sheet")
plt.show()
相关推荐
Sakura_j_h_19 分钟前
Python 在定时任务里输出 emoji,UnicodeEncodeError 从哪来
开发语言·字符编码·windows·python·定时任务
supabc1232 小时前
欧盟电子发票(XRechnung/Peppol/ZUGFeRD)踩坑记:用 Python 不装 Java 跑官方校验规则
xml·python·开源·电子发票·1024程序员节
ZhengEnCi2 小时前
AI Agent工具调用防护层怎么写-一份能直接跑的Python四层拦截实现
python·llm·agent
ZhengEnCi2 小时前
AI Agent工具误调用怎么解决-从参数校验到高危二次确认的四层工程防线
python·llm·agent
镜子AI4 小时前
镜子AI工程教程:用Python实现关键词布局检查器与语义改写查重(附完整代码)
人工智能·python·microsoft
小oo呆5 小时前
【学习心得】Python协程
python
信誓旦旦的程序猿5 小时前
【Python量化实战宝典 #22】涨跌停、连板情绪手册:情绪指标构建(Python 可跑)
python·1024程序员节·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口
gCode Teacher 格码致知5 小时前
Pandas教学-21:subplots的使用
python·pandas·1024程序员节
2601_967980115 小时前
Python开发的顶级开源项目全景图:2025-2026年生态概览
python·机器学习·开源项目·数据科学·生态概览
benchmark_cc6 小时前
量化开发中,什么时候应该停止手动下载股票数据?
python·数据分析·pandas·量化交易·1024程序员节·股票数据·quantdash