r语言使用iris数据集,按花的种类对任意一个变量进行中心化、标准化、归一化,并绘制图形。要求不同品种不同颜色表示具体代码
时间: 2024-12-02 10:20:55 浏览: 28
在R语言中,我们可以使用`iris`数据集进行预处理,包括中心化(mean normalization)、标准化(z-score scaling)和归一化(min-max scaling),然后通过`ggplot2`包创建不同品种的可视化图表。以下是具体的步骤:
1. 首先加载必要的库:
```R
library(ggplot2)
library(dplyr) # for data manipulation
```
2. 加载并查看`iris`数据集:
```R
data(iris)
head(iris) # 查看数据前几行
```
3. 选择一个变量进行操作(例如选择`Sepal.Length`作为示例):
```R
variable <- "Sepal.Length"
```
4. 对`variable`进行中心化:
```R
iris_centered <- iris %>%
mutate_at(., 5, function(x) (x - mean(x)))
```
5. 进行标准化(Z-Score):
```R
iris_normalized <- iris_centered %>%
mutate_at(., 5, function(x) (x - mean(x)) / sd(x))
```
6. 归一化(Min-Max Scaling):
```R
iris_scaled <- iris %>%
mutate_at(., 5, function(x) (x - min(x)) / (max(x) - min(x)))
```
7. 创建不同品种的颜色映射:
```R
species_colors <- c(setosa = "red", versicolor = "blue", virginica = "green")
```
8. 绘制图形。这里我们将分别绘制三种变换后的`variable`的箱线图,每个品种对应一种颜色:
```R
# 中心化
ggplot(iris_centered, aes_string(x = "Species", y = variable, color = "Species")) +
geom_boxplot() +
scale_color_manual(values = species_colors) +
labs(title = "Centered Sepal Length by Species")
# 标准化
ggplot(iris_normalized, aes_string(x = "Species", y = variable, color = "Species")) +
geom_boxplot() +
scale_color_manual(values = species_colors) +
labs(title = "Normalized Sepal Length by Species")
# 归一化
ggplot(iris_scaled, aes_string(x = "Species", y = variable, color = "Species")) +
geom_boxplot() +
scale_color_manual(values = species_colors) +
labs(title = "Scaled Sepal Length by Species")
```
阅读全文