[英]how to color data points on a box plot by certain observations of a group in R
我正在尝试根据某个组为我的箱线图上的数据点添加颜色,但只有该组内的一部分观察结果。 例如:
我有一个数据集看起来像这样
Value Make Location
40 Honda USA
50 Toyota CHINA
60 Ford FRANCE
70 Subaru CHINA
50 Honda BRAZIL
50 Toyota SPAIN
30 Nissan CANADA
我正在绘制一个箱线图,查看 y 轴上的值变量并在 x 轴上创建变量。 然后我想将所有数据点添加到我的箱线图中,并且只为位置 = 中国、巴西和西班牙(所有不同颜色)的数据点着色,而其他不是中国、巴西和西班牙的数据点将是黑色的.
这是我的代码:
library(ggplot2)
data %>% ggplot(aes(x=Make, y=Value)) +
geom_boxplot() +
geom_jitter(aes(color=Location))
但这会根据位置变量为所有数据点着色。 我只需要在位置为中国、巴西和西班牙时着色的点,但仍显示所有数据点。 我怎么能做到这一点? 任何建议将不胜感激!
如果没有您想要的国家/地区,您可以创建一个额外的列,上面写着“其他”。 然后,使用scale_color_manual
输入您想要的颜色。
library(data.table)
df <- fread('Value Make Location
40 Honda USA
50 Toyota CHINA
60 Ford FRANCE
70 Subaru CHINA
50 Honda BRAZIL
50 Toyota SPAIN
30 Nissan CANADA')
library(dplyr)
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:data.table':
#>
#> between, first, last
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
library(ggplot2)
visible_ctr <- c('BRAZIL','CHINA','SPAIN')
df %>%
mutate(lcat=if_else(Location %in% visible_ctr,Location,'Others')) %>%
mutate(lcat=factor(lcat,levels = c(visible_ctr,'Others'))) %>% # Reorder legend
ggplot(aes(x=Make, y=Value)) +
geom_boxplot() +
geom_jitter(aes(color=lcat)) +
scale_color_manual(values = c(BRAZIL='blue',CHINA='red',SPAIN='yellow',Others='black'))
由reprex 包(v0.3.0) 于 2020 年 2 月 20 日创建
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.