2010-03-10 86 views
11

JD Long幫助我:question about manual annotation在不同的方面手動標註具有不同標籤的ggplot

但是有可能在一個多面的情節上做類似的事情,例如標籤樣式對應於linestyle(aestetics),並且可以單獨註釋不同的方面?

一些數據:

funny <- structure(list(Institution = structure(c(1L, 1L, 1L, 1L, 2L, 
2L, 2L, 2L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 3L, 
3L, 3L, 3L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 1L, 
1L, 1L, 1L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L), .Label = c("Q-branch", 
"Some-Ville", "Spectre"), class = "factor"), Type = structure(c(5L, 
6L, 1L, 3L, 5L, 6L, 2L, 4L, 5L, 6L, 2L, 4L, 5L, 6L, 2L, 4L, 5L, 
6L, 2L, 4L, 5L, 6L, 2L, 4L, 5L, 6L, 2L, 4L, 5L, 6L, 2L, 4L, 5L, 
6L, 2L, 4L, 5L, 6L, 2L, 4L, 5L, 6L, 2L, 4L, 5L, 6L, 2L, 4L), .Label = c("Korte videregående uddannelser", 
"Mammas beer", "Mellemlange videregående uddannelser", "Tastes good", 
"Unknown", "Your"), class = "factor"), År = c(2008L, 2008L, 
2008L, 2008L, 2008L, 2008L, 2008L, 2008L, 2008L, 2008L, 2008L, 
2008L, 2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 
2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 
2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 2006L, 2006L, 
2006L, 2006L, 2006L, 2006L, 2006L, 2006L, 2006L, 2006L, 2006L, 
2006L), Mndr = c(3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 15L, 15L, 
15L, 15L, 15L, 15L, 15L, 15L, 15L, 15L, 15L, 15L, 27L, 27L, 27L, 
27L, 27L, 27L, 27L, 27L, 27L, 27L, 27L, 27L), Data = c(159L, 
NA, NA, 23L, 204L, NA, NA, 12L, 256L, NA, NA, 24L, 166L, 6L, 
NA, 43L, 228L, NA, NA, 20L, 196L, 11L, NA, 37L, 99L, 14L, 9L, 
96L, 147L, 7L, 5L, 91L, 100L, 10L, 7L, 126L, 60L, 17L, 6L, 106L, 
78L, 18L, 13L, 140L, 48L, 23L, 5L, 136L)), .Names = c("Institution", 
"Type", "År", "Mndr", "Data"), class = "data.frame", row.names = c(NA, 
-48L)) 

而且琢面情節:

ggplot(funny, aes(Mndr, y=Data, group=Type, col=Type)) + 
    geom_line() + 
    facet_grid(.~Institution) 

預先感謝您的幫助!

+0

@Shane:我不認爲這是重複的 - Andreas不想使用圖中的數據來計算值,而是將他的標籤格式化以匹配行的樣式。 – Aniko 2010-03-10 14:49:29

+0

@Shane感謝您的關注。安子的回答正是我所希望的。所以我想沒有必要進一步澄清?除非爲了事業的後代。再次感謝。 – Andreas 2010-03-10 15:07:25

+0

相關問題:http://stackoverflow.com/questions/2050610/creating-a-facet-wrap-plot-with-ggplot2-with-different-annotations-in-each-plot – Shane 2010-03-11 14:17:18

回答

15

想法是,對於每個手動註釋,您不僅要定義標籤,還要定義面板,顏色等的所有變量。以下代碼在不同面板中添加了兩個標籤。

pl <- ggplot(funny, aes(Mndr, y=Data, group=Type, col=Type))+geom_line() 
     +facet_grid(.~Institution) #your plot 
nd <- data.frame(Institution=c("Q-branch","Some-Ville"), #panel 
       Type=c("Unknown", "Tastes good"),  #color 
       Mndr=c(7,12),       #x-coordinate of label 
       Data= c(170,50),       #y-coordinate of label 
       Text=c("Label 1", "Label 2"))   #label text 
# add labels to plot: 
pl <- pl + geom_text(aes(label=Text), data=nd, hjust=0, legend=FALSE) 
pl 

legend=FALSE選項將確保表示文本的小a未添加到圖例中。您不必爲標籤設置數據框,您可以爲每個標籤單獨設置geom_text,但我覺得這種方式更簡單。

+0

據我可以告訴從手冊中,我認爲新的ggplot語法已經改變了一點,legend = FALSE現在是show_guide = FALSE。 – PatrickT 2013-03-30 16:10:22

+0

我試圖從問題中的代碼以及答案中的代碼重現這些情節,但兩個情節都是相同的。在後一種情況下沒有文字寫在地塊上。我的ggplot2(2.1.0)版本有變化嗎? – Robert 2016-10-28 19:32:36

相關問題