[英]Add customized legends to geom_line() in R
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 行”。 謝謝!
這類問題通常與重塑數據有關。 格式應該是長格式,數據是寬格式。 請參閱這篇關於如何將數據從寬格式重塑為長格式的帖子。
首先,基本的 plot。圖例將自動具有變量名稱,因為effect
, LLCI
和ULCI
現在在長格式變量name
,映射到l.netype
。
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
,省略 plot。
labs <- c("this is line 1", "this is line 2", "this is line 3")
g + scale_linetype_manual(labels = labs, values = lty)
為了在圖例行與其文本之間留出空間,請使用設置了legend.spacing
的theme
。 在這種情況下應該是legend.spacing.x
。 左對齊文本也會使所有文本標簽的間距相等。
g + scale_linetype_manual(values = lty) +
theme(
legend.spacing.x = unit(0, "cm"),
legend.text.align = 0
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.