📜  在 R 中使用 ggplot2 散点图综合指南

📅  最后修改于: 2022-05-13 01:54:38.906000             🧑  作者: Mango

在 R 中使用 ggplot2 散点图综合指南

在本文中,我们将了解如何在 R 编程语言中使用 ggplot2 使用散点图。

ggplot2 包是 R 语言中广泛使用的免费、开源、易用的可视化包。它是 Hadley Wickham 编写的最强大的可视化包。这个包可以使用 R函数install.packages() 安装。

install.packages("ggplot2")

散点图使用点来表示两个不同数值变量的值,并用于观察这些变量之间的关系。要绘制散点图,我们将使用geom_point()函数。以下是有关 ggplot函数geom_point() 的简要信息。

示例:简单散点图

R
library(ggplot2)
ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width)) +
    geom_point()


R
# Scatter plot with groups
 
ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width)) +
    geom_point(aes(color = factor(Sepal.Width)))


R
# Changing color
 
ggplot(iris) +
    geom_point(aes(x = Sepal.Length,
                   y = Sepal.Width,
                   color = Species))


R
# Changing point shapes in a ggplot scatter plot
# Changing color
 
ggplot(iris) +
    geom_point(aes(x = Sepal.Length, y = Sepal.Width,
                   shape = Species , color = Species))


R
# Changing the size aesthetic mapping in a
# ggplot scatter plot
 
ggplot(iris) +
    geom_point(aes(x = Sepal.Length,
                   y = Sepal.Width,
                   size = .5))


R
# Label points in the scatter plot
 
ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width)) +
    geom_point() +
    geom_text(label=rownames(iris))


R
# Add regression lines with stat_smooth
ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width)) +
    geom_point() +
    stat_smooth(method=lm)


R
# Add regression lines with stat_smooth
ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width)) +
    geom_point() +
    stat_smooth()


R
# Add regression lines with geom_smooth
ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width)) +
    geom_point() +
    geom_smooth()


R
# Add regression lines with geom_smooth
ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width)) +
    geom_point() +
    geom_smooth(method=lm, se=FALSE)


R
# Add regression lines with geom_smooth
ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width)) +
    geom_point() +
    geom_smooth(intercept = 37, slope = -5, color="red",
                 linetype="dashed", size=1.5)


R
# Change the point color/shape/size manually
library(ggplot2)
 
# Change point shapes and colors manually
ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species)) +
    geom_point() +
    geom_smooth(method=lm, se=FALSE, fullrange=TRUE)+
    scale_shape_manual(values=c(3, 16, 17))+
    scale_color_manual(values=c('#999999','#E69F00', '#56B4E9'))+
    theme(legend.position="top")


R
# Add marginal rugs to a scatter plot
# Changing point shapes in a ggplot scatter plot
# Changing color
 
ggplot(iris) +
    geom_point(aes(x = Sepal.Length, y = Sepal.Width,
                   shape = Species , color = Species))+
    geom_rug()


R
# Add marginal rugs to a scatter plot
 
ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width)) +
    geom_point()+
    geom_rug()


R
# Scatter plots with the 2d density estimation
 
ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width)) +
    geom_point()+
    geom_density_2d()


R
ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width)) +
    geom_point()+
    geom_density_2d(alpha = 0.5)+
    geom_density_2d_filled()


R
# Scatter plots with the 2d density estimation
 
ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width)) +
    geom_point()+
    stat_density_2d()


R
# Scatter plots with ellipses
 
ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width)) +
    geom_point()+
    stat_ellipse()



输出:

带组的散点图

在这里,我们将使用一组数据(即因子级别数据)来区分值。 aes()函数控制组的颜色,它应该是因子变量。

句法:

示例:包含组的散点图

R

# Scatter plot with groups
 
ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width)) +
    geom_point(aes(color = factor(Sepal.Width)))


输出:

改变颜色

在这里,我们使用aes() 方法颜色属性来更改具有特定变量的数据点的颜色。

示例:更改颜色

R

# Changing color
 
ggplot(iris) +
    geom_point(aes(x = Sepal.Length,
                   y = Sepal.Width,
                   color = Species))


输出:

改变形状

要更改数据点的形状,我们将使用带有 aes() 方法的形状属性。

示例:改变形状

R

# Changing point shapes in a ggplot scatter plot
# Changing color
 
ggplot(iris) +
    geom_point(aes(x = Sepal.Length, y = Sepal.Width,
                   shape = Species , color = Species))


输出:

改变尺寸美学

为了改变美学或数据点,我们将在 aes() 方法中使用大小属性

示例:更改大小

R

# Changing the size aesthetic mapping in a
# ggplot scatter plot
 
ggplot(iris) +
    geom_point(aes(x = Sepal.Length,
                   y = Sepal.Width,
                   size = .5))


输出:

在散点图中标注点

为了在数据点上部署标签,我们将在geom_text() 方法中使用标签。

示例:在散点图中标注点

R

# Label points in the scatter plot
 
ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width)) +
    geom_point() +
    geom_text(label=rownames(iris))


输出:

ggplot2中的回归线

回归模型是一个目标预测值支持的独立变量,主要用于找出变量之间的关系和预测。在 R 中,我们可以使用 stat_smooth()函数来平滑可视化。

示例:回归线

R

# Add regression lines with stat_smooth
ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width)) +
    geom_point() +
    stat_smooth(method=lm)


输出:

示例:在黄土模式下使用 stat_mooth

R

# Add regression lines with stat_smooth
ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width)) +
    geom_point() +
    stat_smooth()


输出:

geom_smooth()函数来表示回归线并平滑可视化。

示例:使用 geom_smooth()

R

# Add regression lines with geom_smooth
ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width)) +
    geom_point() +
    geom_smooth()


输出:

为了借助 geom_smooth()函数在图形介质上显示回归线,我们将方法传递为“loess”,使用的公式为 y ~ x。

示例: geom_smooth 与黄土模式

R

# Add regression lines with geom_smooth
ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width)) +
    geom_point() +
    geom_smooth(method=lm, se=FALSE)


输出:

截距和斜率可以通过 lm()函数轻松计算,该函数用于线性回归,然后是 coefficients()。

示例:截距和坡度

R

# Add regression lines with geom_smooth
ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width)) +
    geom_point() +
    geom_smooth(intercept = 37, slope = -5, color="red",
                 linetype="dashed", size=1.5)


输出:

手动更改点颜色/形状/大小

scale_fill_manual、scale_size_manual、scale_shape_manual、scale_linetype_manual 是为分类数据分配所需颜色的内置类型,我们使用其中之一 scale_color_manual()函数,用于缩放(地图)。

示例:改变美学

R

# Change the point color/shape/size manually
library(ggplot2)
 
# Change point shapes and colors manually
ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species)) +
    geom_point() +
    geom_smooth(method=lm, se=FALSE, fullrange=TRUE)+
    scale_shape_manual(values=c(3, 16, 17))+
    scale_color_manual(values=c('#999999','#E69F00', '#56B4E9'))+
    theme(legend.position="top")


输出:

边际地毯到散点图

要将边际地毯添加到散点图中,我们将使用 geom_rug() 方法。

示例:边缘地毯

R

# Add marginal rugs to a scatter plot
# Changing point shapes in a ggplot scatter plot
# Changing color
 
ggplot(iris) +
    geom_point(aes(x = Sepal.Length, y = Sepal.Width,
                   shape = Species , color = Species))+
    geom_rug()


输出:

在这里,我们将边际地毯添加到散点图中

示例:边缘地毯

R

# Add marginal rugs to a scatter plot
 
ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width)) +
    geom_point()+
    geom_rug()


输出:

具有二维密度估计的散点图

为了在散点图中创建密度估计,我们将使用ggplot2 中的 geom_density_2d() 方法和 geom_density_2d_filled()

示例:具有二维密度估计的散点图

R

# Scatter plots with the 2d density estimation
 
ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width)) +
    geom_point()+
    geom_density_2d()


输出:

使用 geom_density_2d_filled() 可视化数据点内部的颜色情况

示例:添加美学

R

ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width)) +
    geom_point()+
    geom_density_2d(alpha = 0.5)+
    geom_density_2d_filled()


输出:

stat_density_2d() 也可用于部署二维密度估计。

示例:部署密度估计

R

# Scatter plots with the 2d density estimation
 
ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width)) +
    geom_point()+
    stat_density_2d()


输出:

带椭圆的散点图

要在一组数据点周围添加一个圆或椭圆,我们使用 stat_ellipse()函数。此函数自动计算圆/椭圆半径以通过分类数据围绕点簇绘制。

示例:带有椭圆的散点图

R

# Scatter plots with ellipses
 
ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width)) +
    geom_point()+
    stat_ellipse()


输出: