seaborn绘图的问题


大家好,

我对seaborn绘图有点陌生,当使用下面的代码时,这些数字看起来有点奇怪,我猜它们并不完全是这样的。 您能指导一下我的不足吗?

我尝试过的:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import plotly as px

Titanic=sns.load_dataset("titanic")
sns.countplot(x='age', data=Titanic) # x-ticks are overlapping

sns.violinplot(data=Titanic, x="age", y="fare", hue="class") # same problem
sns.pairplot(Titanic) # give and error
sns.boxenplot(data=Titanic,x="age", y="fare", hue="class") # graph is too bad as well as same error as previous.
sns.violinplot(data=Titanic, x="age", y="fare", hue="class") # graph is too bad as well as same error as previous.
sns.countplot(x='age', data=Titanic) # x-ticks are overlapping

解决方案1

您需要有关 Seaborn 绘图的帮助。 让我们一一解决:

1. `sns.countplot` 中重叠的 x 刻度: 当“年龄”列中有太多唯一值时,通常会发生这种情况。 为了使绘图更具可读性,您可以增加图形大小或旋转 x 刻度标签。

2. `sns.violinplot`、`sns.boxenplot` 和 `sns.pairplot` 的问题: 这些问题可能是由于“年龄”和“票价”列中数据的性质而引起的。 “年龄”列可能具有 NaN 值,或者“票价”的范围可能太宽,导致绘图倾斜。

3. `sns.pairplot` 错误: 此错误可能是由于数据集中的非数字或 NaN 值造成的。 `sns.pairplot` 仅适用于数字列,不能很好地处理 NaN 值。

以下是一些代码调整和解决这些问题的技巧:

调整计数图

Python
plt.figure(figsize=(10, 6)) # Adjusting figure size
sns.countplot(x='age', data=Titanic)
plt.xticks(rotation=90)  # Rotating x-ticks
plt.show()

处理小提琴图和 Boxen 图

对于“sns.violinplot”和“sns.boxenplot”,确保“age”和“fare”列没有 NaN 值或可能扭曲绘图的异常值。 您可以通过删除 NaN 值或用集中趋势度量(平均值、中位数)填充它们来处理 NaN 值。

Python
# Handling NaN values
Titanic = Titanic.dropna(subset=['age', 'fare'])

# Now try plotting
sns.violinplot(data=Titanic, x="age", y="fare", hue="class")
plt.show()

sns.boxenplot(data=Titanic, x="age", y="fare", hue="class")
plt.show()

修复配对图

要修复“sns.pairplot”,请确保所有列都是数字并处理 NaN 值。

Python
# Dropping non-numeric columns for pairplot
numeric_cols = Titanic.select_dtypes(include=[np.number]).columns.tolist()
Titanic_numeric = Titanic[numeric_cols].dropna()

sns.pairplot(Titanic_numeric)
plt.show()

您可以尝试这些调整,看看它们是否可以解决您的绘图问题吗? 如果您仍然遇到问题,特定的错误消息可以让您更深入地了解可能出现的问题。

コメント

タイトルとURLをコピーしました