📌  相关文章
📜  如何使用 R 中的 ggplot2 在多密度图中通过变量添加垂直线

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

如何使用 R 中的 ggplot2 在多密度图中通过变量添加垂直线

在本文中,我们将讨论如何使用 R 编程语言中的 ggplot2 包在多密度图中通过变量添加垂直线。

为此,首先我们将创建多个按组着色的密度图,然后将线添加为单独的元素。

基本多密度图:

为了使用 ggplot2 在 R 中按变量着色制作多个密度图,我们首先制作一个带有值和类别的数据框。然后我们使用 geom_desnity()函数绘制 ggplot2 密度图。为了根据变量为它们着色,我们将 fill 属性添加为 ggplot()函数中的一个类别。

句法:

例子:

我们在 ggplot 中得到多个密度图,两种颜色对应于第二个分类变量的两个级别/值。如果我们的分类变量有 n 个级别,那么 ggplot2 将制作具有 n 个密度/颜色的多个密度图。

R
# load library
library(tidyverse)
  
set.seed(1234)
  
# create the dataframe
df <- data.frame(
    category=factor(rep(c("category1", "category2","category3"),
                        each=1000)),
    value=round(c(rnorm(1000, mean=65, sd=5),
                  rnorm(1000, mean=85, sd=5),
                 rnorm(1000, mean=105, sd=5))))
  
  
  
# Basic density plot with custom color
# color property to determine the color of plot
# fill property to determine the color beneath plot
ggplot(df, aes(x=value, color=category, fill=category)) +
geom_density(alpha=0.3)


R
# load library
library(tidyverse)
  
set.seed(1234)
df <- data.frame(
    category=factor(rep(c("category1", "category2","category3"), 
                        each=1000)),
    value=round(c(rnorm(1000, mean=65, sd=5),
                  rnorm(1000, mean=85, sd=5),
                 rnorm(1000, mean=105, sd=5))))
  
  
# create median data using above dataframe
# group_by function groups the data of same category
# summarize function with median
# argument calculates the median of value column
median <- df %>%
  group_by(category) %>%
  summarize(median=median(value))
  
  
# Basic density plot with custom color
# color property to determine the color of plot
# fill property to determine the color beneath plot
# geom_vline function draws the line across median 
# of each group
ggplot(df, aes(x=value, color=category, fill=category)) +
geom_density(alpha=0.3)+
  geom_vline(data = median, aes(xintercept = median, 
                                       color = category), size=0.5)


输出:

通过变量添加行

要按变量添加一条线以进行绘图,请为存储按类别分组的值的中值的数据框创建一个新的数据框中值。然后使用 geom_vline函数在按数据类别着色的那个点上画一条线。

句法:

例子:

在这里,我们计算了按类别分组的值的中值,并将其存储在名为中值的数据框中。然后使用 geom_vline()函数在该点绘制一条线,根据数据类别着色。

要创建我们使用的中值数据框,

median <- df %>%
             group_by(category) %>%
             summarize(median=median(value))

由 group_by 和 summarise函数组成的中值数据框如下所示:

# A tibble: 3 x 2
 category  median
       
1 category1     65
2 category2     85
3 category3    105

R

# load library
library(tidyverse)
  
set.seed(1234)
df <- data.frame(
    category=factor(rep(c("category1", "category2","category3"), 
                        each=1000)),
    value=round(c(rnorm(1000, mean=65, sd=5),
                  rnorm(1000, mean=85, sd=5),
                 rnorm(1000, mean=105, sd=5))))
  
  
# create median data using above dataframe
# group_by function groups the data of same category
# summarize function with median
# argument calculates the median of value column
median <- df %>%
  group_by(category) %>%
  summarize(median=median(value))
  
  
# Basic density plot with custom color
# color property to determine the color of plot
# fill property to determine the color beneath plot
# geom_vline function draws the line across median 
# of each group
ggplot(df, aes(x=value, color=category, fill=category)) +
geom_density(alpha=0.3)+
  geom_vline(data = median, aes(xintercept = median, 
                                       color = category), size=0.5)

输出: