d_probe <- soread()
ggplot(d_probe) +
geom_line(aes(x = identity, y = effect)) +
geom_line(aes(x = identity, y = ULCI), linetype = "dotted") +
geom_line(aes(x = identity, y = LLCI), linetype = "dotted")
d_probe:
identity effect se t p LLCI ULCI
2.0000 -0.8046 0.2984 -2.6965 0.0081 -1.3960 -0.2132
2.1400 -0.7471 0.2768 -2.6993 0.0081 -1.2956 -0.1985
2.2800 -0.6895 0.2554 -2.6997 0.0080 -1.1957 -0.1833
2.4200 -0.6319 0.2344 -2.6959 0.0081 -1.0965 -0.1674
2.5600 -0.5744 0.2139 -2.6855 0.0084 -0.9983 -0.1505
2.7000 -0.5168 0.1940 -2.6643 0.0089 -0.9013 -0.1324
2.8400 -0.4593 0.1749 -2.6257 0.0099 -0.8059 -0.1126
2.9800 -0.4017 0.1570 -2.5590 0.0119 -0.7128 -0.0906
3.1200 -0.3441 0.1406 -2.4475 0.0160 -0.6228 -0.0655
3.2600 -0.2866 0.1264 -2.2668 0.0254 -0.5372 -0.0360
3.4000 -0.2290 0.1152 -1.9875 0.0494 -0.4574 -0.0006
3.4023 -0.2281 0.1151 -1.9820 0.0500 -0.4562 0.0000
3.5400 -0.1715 0.1080 -1.5882 0.1151 -0.3854 0.0425
3.6800 -0.1139 0.1054 -1.0804 0.2824 -0.3229 0.0951
3.8200 -0.0563 0.1080 -0.5218 0.6028 -0.2703 0.1577
3.9600 0.0012 0.1153 0.0105 0.9916 -0.2272 0.2296
4.1000 0.0588 0.1265 0.4648 0.6430 -0.1919 0.3094
4.2400 0.1163 0.1406 0.8272 0.4099 -0.1624 0.3951
4.3800 0.1739 0.1570 1.1075 0.2705 -0.1373 0.4851
4.5200 0.2315 0.1750 1.3230 0.1886 -0.1153 0.5782
4.6600 0.2890 0.1940 1.4896 0.1392 -0.0955 0.6736
4.8000 0.3466 0.2139 1.6201 0.1081 -0.0774 0.7706
如何在三行中添加自定义图例,以便读者了解其含义?示例图例可以是:“这是第 1 行”、“这是第 2 行”和“这是第 3 行”。谢谢!
答案 0 :(得分:1)
这类问题通常与重塑数据有关。格式应该是长格式,数据是宽格式。请参阅this post,了解如何将数据从宽格式重新调整为长格式。
首先是基本剧情。图例将自动具有变量的名称,因为 effect
、LLCI
和 ULCI
现在位于长格式变量 name
下,映射到 linetype
。< /p>
library(dplyr)
library(tidyr)
library(ggplot2)
g <- d_probe %>%
pivot_longer(cols = c(effect, LLCI, ULCI)) %>%
ggplot(aes(x = identity, y = value, linetype = name)) +
geom_line()
现在,自定义线型。
lty <- c("solid", "dotted", "dotted")
g + scale_linetype_manual(values = lty)
要更改图例,请使用参数 labels
,省略绘图。
labs <- c("this is line 1", "this is line 2", "this is line 3")
g + scale_linetype_manual(labels = labs, values = lty)
为了在图例行与其文本之间留出空间,请使用带有 theme
集的 legend.spacing
。在这种情况下,它应该是 legend.spacing.x
。并且左对齐文本也会使所有文本标签的间距相等。
g + scale_linetype_manual(values = lty) +
theme(
legend.spacing.x = unit(0, "cm"),
legend.text.align = 0
)