簡體   English   中英

ggplot2 中的每個圖例 Label 的多個固定文本行

[英]Multiple Fixed Lines for Text per Legend Label in ggplot2

(這個問題在ggplot2 中的每個圖例 Label 的多行文本上展開。)

我需要在圖例標簽中包含多行信息。 這些標簽需要在固定點處分成幾行,這就是為什么上一個示例中的解決方案對我不起作用的原因。 我試過使用\n ,但在我使用的表達式中,我最終得到了一個偏移量。

set.seed(10)
dat_sof<-tibble(x=seq(1:10))%>%
            mutate(y=x+rnorm(10))

leg_col<-c("S1"="blue", "S2"='black')
leg_lty<-c("S1"=1, "S2"=2)
leg_lab<-c(expression("S1:\n y = m1 x + b1\n"~ R^{2} ~ " = r1, n = n1"), 
           expression("S2:\n y = m2 x + b2\n"~ R^{2} ~ " = r2, n = n2"))

ggplot(data=dat_sof, aes(x=x, y=y))+
  geom_point()+
  geom_smooth(method='lm', aes(color="S1", lty="S1"), se=F)+
  geom_abline(aes(color="S2", lty="S2", slope=1, intercept=0.1))+
  theme_bw(base_size=14)+
  scale_color_manual(values=leg_col, name="Regressions", labels=leg_lab)+
  scale_linetype_manual(values=leg_lty, name="Regressions", labels=leg_lab)+
  theme(legend.text.align = 0)

我最終得到的是第三行從 alignment 的 rest 偏移,並且圖例沒有適當間隔。 完全不可讀的傳說

謝謝您的幫助!

您可以在theme中使用ggtextelement_markdown() ,這為您提供了很大的靈活性:

library(ggplot2)
library(dplyr)
set.seed(10)
dat_sof<-tibble(x=seq(1:10))%>%
  mutate(y=x+rnorm(10))

leg_col<-c("S1"="blue", "S2"='black')
leg_lty<-c("S1"=1, "S2"=2)
leg_lab <- c("S1:<br>y = m1x + b1<br>R<sup>2</sup> = r1, n = n1",
             "S1:<br>y = m2x + b2<br>R<sup>2</sup> = r2, n = n2")
ggplot(data=dat_sof, aes(x=x, y=y))+
  geom_point()+
  geom_smooth(method='lm', aes(color="S1", lty="S1"), se=F)+
  geom_abline(aes(color="S2", lty="S2", slope=1, intercept=0.1))+
  theme_bw(base_size=14)+
  scale_color_manual(values=leg_col, name="Regressions", labels=leg_lab)+
  scale_linetype_manual(values=leg_lty, name="Regressions", labels=leg_lab)+
  theme(legend.text.align = 0,
        legend.text = ggtext::element_markdown(),
        legend.key.height=unit(2, "cm"))

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM