1、使用 barplot() 绘制条形图
条形图用于显示一个或多个分类变量的中心趋势(如均值)。它可以展示每个类别的估计值及其置信区间。使用barplot()
绘制条形图的函数,可以用于可视化类别内的数据分布和统计估计。常用参数如下,
参数 | 描述 |
x | 指定数据的横轴变量 |
y | 指定数据的纵轴变量 |
hue | 在同一图中添加另一个类别维度 |
data | 要使用的数据集,通常是 pandas 的 DataFrame |
order | 控制条形的顺序 |
hue_order | 使用 hue 时控制不同 hue 类别的顺序 |
estimator | 用于聚合的统计函数,默认是平均值 |
ci | 置信区间的大小,默认是 95% |
n_boot | 计算置信区间的引导样本的数量 |
orient | 控制条形图的方向,'v' 垂直,'h' 水平 |
color | 设置所有条形的颜色 |
palette | 为不同的类别指定不同的颜色 |
saturation | 设置颜色的饱和度 |
errcolor | 错误条的颜色 |
errwidth | 错误条的宽度 |
capsize | 错误条两端的横杠大小 |
dodge | 使用 hue 时,控制条形是否应该分开 |
使用代码:
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
# 示例数据
np.random.seed(0)
data = pd.DataFrame({
'Category': np.random.choice(['A', 'B', 'C'], 100),
'Value': np.random.rand(100),
'Subcategory': np.random.choice(['X', 'Y'], 100)
})
# 设置 seaborn 样式
sns.set(style="whitegrid")
# 创建一个 barplot
plt.figure(figsize=(10, 6))
bar_plot = sns.barplot(
x='Category', # 类别变量
y='Value', # 数值变量
hue='Subcategory', # 子类别变量
data=data, # 数据源
estimator=np.mean, # 使用平均值作为估计量
errorbar=('ci', 95), # 置信区间设为 95%
palette='deep', # 调色板
capsize=0.05 # 错误条横杠大小
)
# 添加图表标题和标签
plt.title('cjavapy')
plt.xlabel('Category')
plt.ylabel('Average Value')
plt.draw()
# 展示图表
plt.show()
2、使用 countplot() 绘制计数图
计数图用于显示每个类别的观察数量,是条形图的一种特殊形式。使用 countplot()
绘制计数图用于显示类别变量中每个类别的观察数量。这个函数特别有用于数据探索和可视化,因为它可以直观地展示类别数据的分布。常用参数如下,
参数名称 | 描述 |
data | 输入数据,可以是 DataFrame、数组、列表等。 |
x, y | 数据中的变量,用于沿 x 轴或 y 轴绘制计数。 |
hue | 分类变量名,用于数据分组,以不同颜色区分。 |
order | 控制主分类的顺序。 |
hue_order | 控制 hue 分类的顺序。 |
orient | 设置图的方向,"v" 为垂直,"h" 为水平。 |
color | 设置所有条形的颜色。 |
palette | 设置不同的颜色,常用于 hue 参数。 |
saturation | 调整颜色的饱和度。 |
dodge | 设置条形是否分开或堆叠,用于 hue 参数。 |
ax | 指定在哪个 matplotlib 的 Axes 对象上绘图。 |
kwargs | 传递给底层 matplotlib 函数的其他关键字参数,用于自定义图表。 |
使用代码:
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
# 示例数据集
data = {
"category": ["A", "B", "A", "C", "B", "A", "C", "C", "B", "A", "C", "B"],
"value": [10, 20, 15, 10, 25, 30, 5, 25, 20, 15, 10, 15]
}
df = pd.DataFrame(data)
# 使用 seaborn 绘制 countplot
plt.figure(figsize=(8, 6))
sns.countplot(x='category', data=df, color='blue', saturation=0.75)
# 添加标题和标签
plt.title("cjavapy")
plt.xlabel("Category")
plt.ylabel("Count")
plt.draw()
plt.show()
3、使用 boxplot() 绘制箱线图
箱线图显示了分布的四分位数,以及异常值。一种很好的方式来可视化数据的分布范围和中心趋势。使用 boxplot()
函数绘制箱形图,非常适合于展示类别内的数据分布和统计估计。常用参数如下,
参数 | 描述 |
data | 数据源,可以是 DataFrame、数组、列表或数组列表 |
x | 数据的变量名,用于水平轴上的数据 |
y | 数据的变量名,用于垂直轴上的数据 |
hue | 用于在数据内进一步分类的变量名 |
order | 控制箱形图的顺序 |
hue_order | 控制在 hue 分类中的顺序 |
orient | 控制箱形图的方向,'v' 表示垂直,'h' 表示水平 |
color | 控制箱形图的主要颜色 |
palette | 给不同级别的 hue 变量设置不同的颜色 |
saturation | 控制颜色的饱和度,介于0和1之间 |
width | 控制箱形图的宽度 |
linewidth | 控制线条的宽度 |
fliersize | 控制异常值标记的大小 |
whis | 控制 IQR(四分位距)的比例 |
notch | 如果设置为 True,箱形图将会带有一个缺口 |
dodge | 当使用 hue 参数时,设置为 True 可以将不同的 hue 类别分开显示 |
showmeans | 控制是否显示均值线 |
showcaps | 控制是否显示上下边界线 |
showbox | 控制是否显示箱体 |
showfliers | 控制是否显示异常值 |
使用代码:
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
# 创建虚构数据
np.random.seed(0)
data = {
'Category': np.random.choice(['Electronics', 'Clothing', 'Furniture'], size=300),
'Sales': np.random.gamma(shape=2., scale=100., size=300),
'Year': np.random.choice(['2019', '2020', '2021'], size=300)
}
df = pd.DataFrame(data)
# 创建箱形图
plt.figure(figsize=(10, 6))
sns.boxplot(x='Category', y='Sales', hue='Year', data=df, palette="Set3", showfliers=False)
# 添加标题和标签
plt.title('cjavapy')
plt.xlabel('Category')
plt.ylabel('Sales')
plt.draw()
# 显示图形
plt.show()
4、使用 violinplot() 绘制小提琴图
小提琴图结合了箱线图和核密度估计的特点,提供了关于分布的更多信息。使用 violinplot()
绘制小提琴图用于显示类别内的数据分布和统计估计。可以帮助你理解不同类别内的数据分布情况。常用参数如下,
参数 | 描述 |
data | 代表数据集,可以是 DataFrame、数组、列表或类似数组的对象。 |
x | 用于绘图的数据中的变量,x 是横轴。 |
y | 用于绘图的数据中的变量,y 是纵轴。 |
hue | 用于分类的变量,决定了数据如何着色。 |
order | 指定 x 变量的类别顺序。 |
hue_order | 指定 hue 变量的类别顺序。 |
bw | 控制小提琴内部核密度估计的带宽,可以是标量或 'scott'、'silverman' 等。 |
scale | 控制小提琴的宽度,可选 'area'、'count'、'width'。 |
inner | 控制小提琴内部数据点的表示方式,如 'box'、'quartile'、'point'、'stick'、None。 |
split | 当使用 hue 参数时,设为 True 可以将不同的 hue 类别画在同一个小提琴内。 |
palette | 用于为不同的 hue 类别指定颜色。 |
scale_hue | 当 scale 为 'count' 时,决定是否分别为每个 hue 类别缩放宽度。 |
gridsize | 用于计算核密度估计的网格大小。 |
width | 整个小提琴图的最大宽度。 |
使用代码:
import seaborn as sns
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 创建示例数据
np.random.seed(10)
data = pd.DataFrame({
'group': np.repeat(['A', 'B', 'C'], 100),
'value': np.concatenate([np.random.normal(0, 1, 100),
np.random.normal(5, 2, 100),
np.random.normal(10, 3, 100)])
})
# 绘制小提琴图
plt.figure(figsize=(10, 6))
sns.violinplot(x='group', y='value', data=data,
palette='Set2', inner='quartile', bw=0.8)
plt.title('cjavapy')
plt.draw()
plt.show()
5、使用 pointplot() 绘制点图
点图用于显示点估计和置信区间,提供了一种估计分类数据的另一种视角。使用 pointplot()
绘制点图用于显示数据点的集中趋势,并使用误差条提供关于数据变化范围的一些估计。适合于展示和比较数值变量在一个或多个分类变量的不同水平下的效果。常用参数如下,
参数 | 描述 |
data | 要绘制的数据 |
x, y | 在数据中指定变量的名称, x 用于横轴,y 用于纵轴 |
hue | 用于分组的变量名称,生成不同颜色的点以区分不同组 |
palette | 设置不同级别的 hue 变量的颜色 |
order, hue_order | 控制 x 变量或 hue 变量的级别顺序 |
ci | 指定置信区间的大小,"sd" 表示绘制标准差 |
estimator | 应用于每个组的 y 值数组的函数,估计中心趋势(默认为平均值) |
markers | 控制点的标记样式 |
linestyles | 控制线的样式 |
dodge | 当使用 hue 参数并且只有一个观测值时,沿分类轴分开绘制点 |
使用代码:
import seaborn as sns
import matplotlib.pyplot as plt
# 生成示例数据集
tips = pd.DataFrame({
'total_bill': [16.99, 10.34, 21.01, 23.68, 24.59],
'tip': [1.01, 1.66, 3.50, 3.31, 3.61],
'sex': ['Female', 'Male', 'Male', 'Male', 'Female'],
'smoker': ['No', 'Yes', 'No', 'Yes', 'No'],
'day': ['Sun', 'Thur', 'Sat', 'Sun', 'Fri'],
'size': [2, 3, 3, 2, 4]
})
# 创建点图
sns.pointplot(x='day', y='tip', hue='sex', data=tips, palette='deep', ci=95, markers=["o", "s"], linestyles=["-", "--"])
# 增加标题和标签
plt.title('cjavapy')
plt.xlabel('Day of the Week')
plt.ylabel('Average Tip ($)')
plt.draw()
plt.show()
6、使用 catplot() 绘制分类回归图
分类回归图是用于绘制分类数据的接口,可以结合不同类型的图形。catplot()
是一个非常灵活的函数,它可以用来绘制多种类型的分类图表,包括 pointplot、barplot、countplot 等。常用参数如下,
参数 | 描述 |
data | 输入的数据集,通常是 Pandas 的 DataFrame。 |
x, y | 数据中的变量名,用于绘图的横轴和纵轴。 |
hue | 用于分组的变量名,通常用于在同一图中显示不同类别的数据。 |
row, col | 用于创建多面板图,可以分别在行和列方向显示不同的变量。 |
kind | 图表的类型,“strip”, “swarm”, “box”, “violin”, “boxen”, “point”, “bar”, 或 “count”。 |
height, aspect | 控制每个面板的大小和纵横比。 |
palette | 颜色方案,用于控制不同类别的颜色。 |
legend | 是否显示图例以及其位置。 |
legend_out | 当设置为 True 时,图例将被放置在整个图形的外部。 |
sharex, sharey | 是否在多面板图中共享 x 轴或 y 轴。 |
facet_kws | 传递给 FacetGrid 的额外参数。 |
kwargs | 传递给底层绘图函数的其他关键字参数。 |
使用代码:
import seaborn as sns
import pandas as pd
import numpy as np
# 示例数据
np.random.seed(10)
data = pd.DataFrame({
'category': np.random.choice(['Category A', 'Category B', 'Category C'], 100),
'value': np.random.normal(10, 3, 100),
'group': np.random.choice(['Group 1', 'Group 2'], 100)
})
# 箱形图
sns.catplot(x='category', y='value', kind='box', data=data)
# 小提琴图
sns.catplot(x='category', y='value', kind='violin', hue='group', data=data)
# 条形图
sns.catplot(x='category', y='value', kind='bar', hue='group', data=data)
plt.draw()
plt.show()