r - 指定 ggplot2 中点的形状

标签 r ggplot2

我有一个带有检测列的 CSV,其中结果为 Y 或 N。我的脚本可以根据该列更改形状,但我需要指定 Y 是实心圆,而 N 是空心的圆圈。

library("ggplot2")
Report213 <- read.csv("FILE_NAME")
ggplot(data = Report213, aes(x = factor(Station_ID, level = c("NEB","NWB","LBC","WB","HR","FDP","FS","NR","PB")), y = Result,  Group = Detect,  colour = Station_ID,shape = Detect
)) + geom_point(aes(shape=Detect,size = 2)) +
facet_grid( . ~ Chemical ) +facet_wrap( ~ Chemical, scales= "free_y",ncol = 1) + theme(
panel.background = element_rect(fill = "white",
                            colour = "white",
                            size = 0.5, linetype = "solid"),
panel.grid.major = element_line(size = 0.5, linetype = 'solid',
                            colour = "gray"), 
panel.grid.minor = element_line(size = 0.25, linetype = 'solid',
                            colour = "white"),
strip.background =element_rect(fill="#454545"),
strip.text = element_text(colour = 'white')
)

感谢任何指点。

从 Report213 输出输出:

structure(list(Station_ID = structure(c(4L, 4L, 4L, 4L, 4L, 9L, 
3L, 9L, 3L, 3L, 9L, 3L, 3L, 5L, 7L, 2L, 6L, 7L, 5L, 7L, 8L, 1L, 
5L, 1L, 2L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 
6L, 7L, 7L, 7L, 8L, 9L, 9L, 9L, 1L, 2L, 3L, 3L, 3L, 3L, 3L, 4L, 
4L, 4L, 4L, 4L, 5L, 5L, 5L, 6L, 7L, 7L, 7L, 8L, 9L, 9L, 9L, 1L, 
2L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 6L, 7L, 
7L, 7L, 8L, 9L, 9L, 9L, 1L, 2L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 
4L, 4L, 5L, 5L, 5L, 6L, 7L, 7L, 7L, 8L, 9L, 9L, 9L), .Label = c("FDP", 
"FS", "HR", "LBC", "NEB", "NR", "NWB", "PB", "WB"), class = "factor"), 
Chemical = structure(c(5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 4L, 
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
4L, 4L, 4L, 4L, 4L, 4L, 4L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L), .Label = c("4,4'-DDT", "CHLORDANE", "Total Aroclors", 
"Total PAHs", "Total PCB Congeners"), class = "factor"), 
Result = c(78.4176, 66.8307, 59.7295, 50.4102, 40.9341, 36.6868, 
34.6394, 26.7728, 23.192, 18.091, 15.47568, 14.539, 13.8006, 
4.489, 2.0159, 1.99509, 1.71768, 1.69251, 1.5165, 1.39725, 
1.27822, 1.22813, 0.89586, 507.7, 135, 684, 8911, 4946, 780, 
4920, 137.9, 559.5, 239.51, 902, 376, 655.4, 8299, 6500, 
889, 502.8, 361.1, 17440, 555.8, 953, 5691, 1790, 0.3, 1, 
14, 12, 20, 20, 21, 10, 14, 7.6, 7.3, 23, 7.7, 11, 1.5, 0.28, 
8.1, 5.4, 11, 0.31, 0.62, 20, 22, 4.2, 6.8, 3.9, 6.7, 4.6, 
6.4, 13, 51, 4.2, 50.8, 43.1, 41.9, 4.1, 4.4, 3.9, 4, 4.2, 
4.5, 2.3, 4.3, 13, 6.8, 35, 1.1, 0.62, 0.053, 1, 7.4, 23, 
3.7, 0.056, 2, 0.055, 0.054, 0.12, 0.053, 0.057, 0.13, 0.088, 
0.11, 0.058, 1.1, 21, 1.5, 4.7, 1.6), Detect = structure(c(2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 
1L, 2L, 2L, 2L, 1L, 1L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 1L, 2L, 2L, 2L, 1L, 1L, 2L, 1L, 1L, 1L, 2L, 1L, 2L, 2L, 
2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 2L, 1L, 2L, 2L, 2L, 2L, 2L), .Label = c("N", "Y"), class = "factor")), class = "data.frame", row.names = c(NA, 
-115L))

最佳答案

您可以使用scale_shape_manual指定形状

P.S:使用facet_gridfacet_wrap而不是同时使用

编辑:使用 ggplot2 v3.0.0 2018年7月发布,可以使用文本/字符串来指定形状。例如。 scale_shape_manual(values = c("circle", "circle open"))。查看更多here

library(tidyverse)

Report213 <- Report213 %>% 
  mutate(Station_ID = factor(Station_ID, 
                             level = c("NEB","NWB","LBC","WB","HR","FDP","FS","NR","PB")))

ggplot(data = Report213, 
       aes(x = Station_ID, 
           y = Result)) + 
  geom_point(aes(color = Station_ID, shape = Detect), size = 2) +
  scale_shape_manual(values = c(19, 1)) +
  facet_wrap( ~ Chemical, scales = "free_y", ncol = 1) + 
  theme(
    panel.background = element_rect(fill = "white",
                                    colour = "white",
                                    size = 0.5, linetype = "solid"),
    panel.grid.major = element_line(size = 0.5, linetype = 'solid',
                                    colour = "gray"), 
    panel.grid.minor = element_line(size = 0.25, linetype = 'solid',
                                    colour = "white"),
    strip.background =element_rect(fill = "#454545"),
    strip.text = element_text(colour = 'white')
  )

编辑2:添加字符串〜整数形状表以供将来引用

  pch_table <- c(
    "square open"           = 0,
    "circle open"           = 1,
    "triangle open"         = 2,
    "plus"                  = 3,
    "cross"                 = 4,
    "diamond open"          = 5,
    "triangle down open"    = 6,
    "square cross"          = 7,
    "asterisk"              = 8,
    "diamond plus"          = 9,
    "circle plus"           = 10,
    "star"                  = 11,
    "square plus"           = 12,
    "circle cross"          = 13,
    "square triangle"       = 14,
    "triangle square"       = 14,
    "square"                = 15,
    "circle small"          = 16,
    "triangle"              = 17,
    "diamond"               = 18,
    "circle"                = 19,
    "bullet"                = 20,
    "circle filled"         = 21,
    "square filled"         = 22,
    "diamond filled"        = 23,
    "triangle filled"       = 24,
    "triangle down filled"  = 25
)

使用的数据

Report213 <- structure(list(Station_ID = structure(c(4L, 4L, 4L, 4L, 4L, 9L, 
    3L, 9L, 3L, 3L, 9L, 3L, 3L, 5L, 7L, 2L, 6L, 7L, 5L, 7L, 8L, 1L, 
    5L, 1L, 2L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 
    6L, 7L, 7L, 7L, 8L, 9L, 9L, 9L, 1L, 2L, 3L, 3L, 3L, 3L, 3L, 4L, 
    4L, 4L, 4L, 4L, 5L, 5L, 5L, 6L, 7L, 7L, 7L, 8L, 9L, 9L, 9L, 1L, 
    2L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 6L, 7L, 
    7L, 7L, 8L, 9L, 9L, 9L, 1L, 2L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 
    4L, 4L, 5L, 5L, 5L, 6L, 7L, 7L, 7L, 8L, 9L, 9L, 9L), .Label = c("FDP", 
    "FS", "HR", "LBC", "NEB", "NR", "NWB", "PB", "WB"), class = "factor"), 
    Chemical = structure(c(5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
    5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 4L, 
    4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
    4L, 4L, 4L, 4L, 4L, 4L, 4L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
    3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L), .Label = c("4,4'-DDT", "CHLORDANE", "Total Aroclors", 
    "Total PAHs", "Total PCB Congeners"), class = "factor"), 
    Result = c(78.4176, 66.8307, 59.7295, 50.4102, 40.9341, 36.6868, 
    34.6394, 26.7728, 23.192, 18.091, 15.47568, 14.539, 13.8006, 
    4.489, 2.0159, 1.99509, 1.71768, 1.69251, 1.5165, 1.39725, 
    1.27822, 1.22813, 0.89586, 507.7, 135, 684, 8911, 4946, 780, 
    4920, 137.9, 559.5, 239.51, 902, 376, 655.4, 8299, 6500, 
    889, 502.8, 361.1, 17440, 555.8, 953, 5691, 1790, 0.3, 1, 
    14, 12, 20, 20, 21, 10, 14, 7.6, 7.3, 23, 7.7, 11, 1.5, 0.28, 
    8.1, 5.4, 11, 0.31, 0.62, 20, 22, 4.2, 6.8, 3.9, 6.7, 4.6, 
    6.4, 13, 51, 4.2, 50.8, 43.1, 41.9, 4.1, 4.4, 3.9, 4, 4.2, 
    4.5, 2.3, 4.3, 13, 6.8, 35, 1.1, 0.62, 0.053, 1, 7.4, 23, 
    3.7, 0.056, 2, 0.055, 0.054, 0.12, 0.053, 0.057, 0.13, 0.088, 
    0.11, 0.058, 1.1, 21, 1.5, 4.7, 1.6), Detect = structure(c(2L, 
    2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 
    1L, 2L, 2L, 2L, 1L, 1L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 1L, 2L, 2L, 2L, 1L, 1L, 2L, 1L, 1L, 1L, 2L, 1L, 2L, 2L, 
    2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 2L, 1L, 2L, 2L, 2L, 2L, 2L), 
    .Label = c("N", "Y"), class = "factor")), 
    class = "data.frame", row.names = c(NA, 
    -115L))

reprex package 创建于 2018-06-09 (v0.2.0)。

关于r - 指定 ggplot2 中点的形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50776683/

相关文章:

r - 如何在没有手动限制的情况下在一侧而不是另一侧扩展 ggplot 条形刻度

r - R中带曲线的直方图

在 geom_bar(aes()) 而不是 ggplot(aes()) 中传递变量时反转标签顺序

r - 堆栈条形图 (ggplot) 上乱序的文本标签

r - 宽到长数据转换多列

r - 计算 ggplot 3.3.0 中 `scale_x_binned` 直方图的标签

R ggplot2 : how to automatically adjust the grey area behind the barplot

r - (R lme4)eval 中的错误(替换(expr),envir,enclos): (maxstephalfit) PIRLS step-halvings failed to reduce deviance in pwrssUpdate

减少 R 中的表

r - R 中二元运算符错误的非数字参数