R语言 如何用ggplot2在多重密度图中按变量添加垂直线

R语言 如何用ggplot2在多重密度图中按变量添加垂直线

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

要做到这一点,首先我们将创建按组着色的多个密度图,然后将线作为一个单独的元素添加。

基本多密度图

为了在R语言中用ggplot2制作按变量着色的多重密度图,我们首先制作一个包含数值和类别的数据框。然后我们使用geom_desnity()函数绘制ggplot2密度图。为了根据变量进行着色,我们在ggplot()函数中添加填充属性作为类别。

语法

ggplot(dataFrame, aes( x, color, fill)) + geom_density()

例子

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

# 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语言中的ggplot2在多重密度图中按变量添加垂直线

按变量添加线

要添加一条按变量绘制的线,要创建一个新的数据框架中位数,该数据框架存储按类别分组的数值的中位数。然后使用geom_vline函数在该点上画一条按数据类别着色的线。

语法

plot + geom_vline( dataframe, aes( xintercept, color ), size)

例子

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

为了创建一个中位数数据框,我们使用。

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

由group_by和summaryize函数制成的中位数数据框看起来像。

# A tibble: 3 x 2
 category  median
 <fct>      <dbl>
1 category1     65
2 category2     85
3 category3    105
# 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)

输出

如何用R语言中的ggplot2在多重密度图中按变量添加垂直线

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程