如何使用Python将鸢尾花数据集中的花瓣长度分别以花萼长度和宽度作为x,y轴绘制散点图,同时根据品种区分颜色?接着,请分别用不同品种的数据生成花瓣长度的箱线图与小提琴图展示其分布情况?
时间: 2024-11-12 14:43:54 浏览: 34
首先,你需要安装一些必要的库,如`matplotlib`, `seaborn` 和 `pandas`。如果你还没有安装,可以使用以下命令:
```bash
pip install matplotlib seaborn pandas numpy
```
然后,你可以使用`Iris`数据集,这是Python的`sklearn`库内置的一个经典示例。这里是一个步骤指南:
1. 导入所需库:
```python
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.datasets import load_iris
import pandas as pd
```
2. 加载数据集并创建DataFrame:
```python
iris = load_iris()
df_iris = pd.DataFrame(data=iris.data, columns=iris.feature_names)
df_iris['species'] = iris.target_names[iris.target]
```
3. 绘制散点图:
```python
# 指定花瓣长度(petal length)作为x轴,花萼长度(sepal length)和宽度(sepal width)作为y轴
plt.figure(figsize=(8, 6))
sns.scatterplot(x='petal length (cm)', y='sepal length (cm)', hue='species', data=df_iris, size='petal width (cm)')
plt.title('Petal Length vs Sepal Metrics by Species')
plt.show()
```
4. 绘制箱线图和小提琴图:
```python
# 只画花瓣长度的分布
plt.figure(figsize=(10, 4))
for i, species in enumerate(iris.target_names):
ax = plt.subplot(1, 3, i + 1)
sns.boxplot(x="species", y="petal length (cm)", data=df_iris[df_iris["species"] == species], fliersize=0) # 箱线图
sns.violinplot(x="species", y="petal length (cm)", data=df_iris[df_iris["species"] == species]) # 小提琴图
ax.set_title(species)
plt.tight_layout()
plt.show()
```
以上代码将分别绘制出花瓣长度与花萼长度、宽度的关系,并通过品种区分颜色,以及花瓣长度的箱线图和小提琴图展示不同品种的分布情况。
阅读全文