如何通过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))
但这会根据位置变量为所有数据点着色。我只需要在位置为中国、巴西和西班牙但仍显示所有数据点时才对这些点进行着色。我怎么能做到这一点?任何建议将不胜感激!
如果没有您想要的国家/地区,您可以创建一个额外的列 "Others"。然后,使用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 package (v0.3.0)
于 2020 年 2 月 20 日创建
我正在尝试根据某个组(但仅是该组中的一部分观察结果)为我的箱线图上的数据点添加颜色。例如:
我有一个数据集看起来有点像这样
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))
但这会根据位置变量为所有数据点着色。我只需要在位置为中国、巴西和西班牙但仍显示所有数据点时才对这些点进行着色。我怎么能做到这一点?任何建议将不胜感激!
如果没有您想要的国家/地区,您可以创建一个额外的列 "Others"。然后,使用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 package (v0.3.0)
于 2020 年 2 月 20 日创建