繁体   English   中英

如何通过对 R 中组的某些观察为箱线图上的数据点着色

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM