如何在 dplyr tibble 字符变量中包含数学符号?
How to include math symbols in a dplyr tibble character variable?
我有关于收入不同工资率的个人的数据,我想制作一个 ggplot,其中包含每个工资箱的单独系列。
下面的代码有效,但我希望有一种方法可以在变量中包含数学符号,以便 <= 变成图例中的适当符号(< 下面有一个横条)。我试图避免在情节代码中定义图例标签,因为我必须多次重复这种类型的情节,如果我添加新的工资箱,该系列可能会无意中被错误标记。将来我可能还想在图例对象中包含其他数学符号,与 <=.
相比,它们更不容易与原始文本区分开来
library(tidyverse)
wage_data <- tibble(
x=runif(100, 8, 11),
y=rnorm(100),
z=y+rnorm(100, 0, 0.5),
worker_group=case_when(
x<9 ~ "Wage<9",
x>=9 & x<10 ~ "9<=Wage<10",
x>=10 ~ "Wage>=10"
)
)
wage_data %>%
ggplot(aes(y, z, color=worker_group)) + geom_point()
也许更好的方法是将 worker_group 变量存储为一个因子,其中标签包含数学符号,我可以控制级别的顺序。知道怎么做吗?提前致谢。
我不使用 ggplot,但这适用于基本图形,应该也适用于 ggplot
lbl <- gsub('^(.*)(?=[<>])', 'paste(\1)', unique(wage_data$worker_group), perl = TRUE)
# [1] "paste(Wage)>=10" "paste(9<=Wage)<10" "paste(Wage)<9"
ggplot(wage_data, aes(y, z, color = worker_group)) +
geom_point() +
scale_color_manual(values = scales::hue_pal()(3), labels = parse(text = lbl))
这可能有效:
library(ggplot2)
library(tibble)
library(tidyverse)
wage_data <- tibble(
x=runif(100, 8, 11),
y=rnorm(100),
z=y+rnorm(100, 0, 0.5),
worker_group=case_when(
x<9 ~ "Wage < 9",
x>=9 & x<10 ~ "9 <= `Wage < 10`",
x>=10 ~ "Wage >= 10"
)
)
wage_data %>%
ggplot(aes(y, z, color=worker_group)) +
geom_point() +
scale_color_manual(values = scales::hue_pal()(3),
labels = scales::parse_format())
输出:
我有关于收入不同工资率的个人的数据,我想制作一个 ggplot,其中包含每个工资箱的单独系列。
下面的代码有效,但我希望有一种方法可以在变量中包含数学符号,以便 <= 变成图例中的适当符号(< 下面有一个横条)。我试图避免在情节代码中定义图例标签,因为我必须多次重复这种类型的情节,如果我添加新的工资箱,该系列可能会无意中被错误标记。将来我可能还想在图例对象中包含其他数学符号,与 <=.
相比,它们更不容易与原始文本区分开来library(tidyverse)
wage_data <- tibble(
x=runif(100, 8, 11),
y=rnorm(100),
z=y+rnorm(100, 0, 0.5),
worker_group=case_when(
x<9 ~ "Wage<9",
x>=9 & x<10 ~ "9<=Wage<10",
x>=10 ~ "Wage>=10"
)
)
wage_data %>%
ggplot(aes(y, z, color=worker_group)) + geom_point()
也许更好的方法是将 worker_group 变量存储为一个因子,其中标签包含数学符号,我可以控制级别的顺序。知道怎么做吗?提前致谢。
我不使用 ggplot,但这适用于基本图形,应该也适用于 ggplot
lbl <- gsub('^(.*)(?=[<>])', 'paste(\1)', unique(wage_data$worker_group), perl = TRUE)
# [1] "paste(Wage)>=10" "paste(9<=Wage)<10" "paste(Wage)<9"
ggplot(wage_data, aes(y, z, color = worker_group)) +
geom_point() +
scale_color_manual(values = scales::hue_pal()(3), labels = parse(text = lbl))
这可能有效:
library(ggplot2)
library(tibble)
library(tidyverse)
wage_data <- tibble(
x=runif(100, 8, 11),
y=rnorm(100),
z=y+rnorm(100, 0, 0.5),
worker_group=case_when(
x<9 ~ "Wage < 9",
x>=9 & x<10 ~ "9 <= `Wage < 10`",
x>=10 ~ "Wage >= 10"
)
)
wage_data %>%
ggplot(aes(y, z, color=worker_group)) +
geom_point() +
scale_color_manual(values = scales::hue_pal()(3),
labels = scales::parse_format())
输出: