簡體   English   中英

ggplot2構面:每個圖的注釋文字不同

[英]ggplot2 facets: Different annotation text for each plot

我有以下生成的數據框,稱為Raw_Data:

    Time Velocity Type
1    10        1    a
2    20        2    a
3    30        3    a
4    40        4    a
5    50        5    a
6    10        2    b
7    20        4    b
8    30        6    b
9    40        8    b
10   50        9    b
11   10        3    c
12   20        6    c
13   30        9    c
14   40       11    c
15   50       13    c

我用ggplot2繪制了這些數據:

ggplot(Raw_Data, aes(x=Time, y=Velocity))+geom_point() + facet_grid(Type ~.)

我有以下對象:Regression_a,Regression_b,Regression_c。 這些是每個圖的線性回歸方程。 每個圖應顯示相應的等式。

使用注釋會在每個圖上顯示特定的方程式:

annotate("text", x = 1.78, y = 5, label = Regression_a, color="black", size = 5, parse=FALSE)

我嘗試使用以下代碼克服此問題:

Regression_a_eq <- data.frame(x = 1.78, y = 1,label = Regression_a,
                       Type = "a")
p <- x + geom_text(data = Raw_Data,label = Regression_a)

這沒有解決問題。 每個圖仍顯示Regression_a,而不僅僅是圖a

您可以將表達式作為字符值放在具有與數據數據框中相同的唯一Type的新數據geom_text ,並使用geom_text添加它們:

regrDF <- data.frame(Type = c('a','b','c'), lbl = c('Regression_a', 'Regression_b', 'Regression_c'))

ggplot(Raw_Data, aes(x = Time, y = Velocity)) +
  geom_point() + 
  geom_text(data = regrDF, aes(x = 10, y = 10, label = lbl), hjust = 0) +
  facet_grid(Type ~.)

這使:

在此處輸入圖片說明

您可以使用適當的表達式替換regrDF$lbl的文本值。

如果我們在水平和垂直方向都有方面,則僅是對所采用答案的補充。

regrDF <- data.frame(Type1 = c('a','a','b','b'),
                     Type2 = c('c','d','c','d'),
                     lbl = c('Regression_ac', 'Regression_ad', 'Regression_bc', 'Regression_bd'))    
ggplot(Raw_Data, aes(x = Time, y = Velocity)) + 
       geom_point() + 
       geom_text(data = regrDF, aes(x = 10, y = 10, label = lbl), hjust = 0) +
       facet_grid(Type1 ~ Type2)

答案是好的,但仍然不完善,因為我不知道如何同時合並數學表達式和換行符( 在replace()表達式中添加換行符 )。

暫無
暫無

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

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