1、条形图
条形图用于显示离散变量的值。在排名分析中,它可以用来表示不同类别的数量或平均值。使用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
# 生成示例数据集
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]
})
# 设置 seaborn 样式
sns.set(style="whitegrid")
sns.barplot(x="day",
y="total_bill",
hue="sex",
data=tips,
order=["Thur", "Fri", "Sat", "Sun"],
hue_order=["Female", "Male"],
estimator=sum,
ci=95,
n_boot=1000,
orient="v",
color="blue",
palette="deep",
saturation=0.5,
errcolor="gray",
errwidth=1,
capsize=0.1,
dodge=True)
# 添加图表标题和标签
plt.title('cjavapy')
plt.draw()
# 展示图表
plt.show()
2、计数图
计数图是条形图的一个特例,用于显示每个类别的观察数量。使用 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
import numpy as np
# 创建示例数据
np.random.seed(0)
data = pd.DataFrame({
'Fruit': np.random.choice(['Apple', 'Banana', 'Orange', 'Grapes'], size=100),
'Gender': np.random.choice(['Male', 'Female'], size=100)
})
# 创建 countplot
plt.figure(figsize=(10, 6))
sns.countplot(
data=data,
x='Fruit',
hue='Gender',
order=['Apple', 'Banana', 'Orange', 'Grapes'], # 控制主分类的顺序
hue_order=['Male', 'Female'], # 控制hue分类的顺序
orient='v',
color='blue',
palette='Set1', # 颜色板
saturation=0.8,
dodge=True # 分开显示每个 hue 类别
)
# 添加标题
plt.title('cjavapy')
plt.draw()
plt.show()
3、线图
数据点是连续的或有时间序列时,线图是一个好选择。它可以展示趋势和排名的变化。使用lineplot()
是 Seaborn 中用于绘制线性数据的一个非常有用的函数。常用参数如下,
参数 | 描述 |
data | DataFrame、数组或列表类型的数据集 |
x | 指定数据集中用于横轴的变量 |
y | 指定数据集中用于纵轴的变量 |
hue | 数据的分类变量名称,用于颜色区分 |
style | 数据的分类变量名称,用于线条样式 |
size | 数据的分类变量名称,用于线条粗细 |
palette | 设置线条颜色 |
markers | 是否在每个数据点处显示标记 |
dashes | 是否为不同的类使用不同的线型 |
estimator | 控制每个 x 值点处 y 值的估计方式 |
ci | 控制置信区间的大小 |
errorbar | 错误条形式 |
n_boot | 计算置信区间时的引导样本数量 |
使用示例:
import seaborn as sns
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 生成示例数据
np.random.seed(0)
dates = pd.date_range('20210101', periods=100)
data = pd.DataFrame({
'Date': dates,
'Value': np.random.randn(100).cumsum(),
'Category': np.random.choice(['A', 'B', 'C'], 100)
})
# 绘制线图
sns.set_theme(style="whitegrid")
lineplot = sns.lineplot(
x='Date',
y='Value',
hue='Category',
style='Category',
markers=True,
dashes=False,
data=data
)
# 设置图表标题和标签
lineplot.set_title('cjavapy')
lineplot.set_xlabel('Date')
lineplot.set_ylabel('Value')
# 显示图表
sns.despine()
plt.draw()
plt.show()