2012-07-06 61 views
64

有沒有辦法改變ggplot2中的圖例項之間的間距?我目前有有沒有辦法改變ggplot2中的圖例項之間的間距?

legend.position ="top" 

它會自動產生一個水平的圖例。然而,物品的間距非常接近,我想知道如何將它們分開更遠。

+0

這將是非常有用的當前解決這個現在'opts'折舊。 – geotheory 2014-06-03 09:30:38

+0

在這裏:https://pastebin.com/NnxMiTeH – PatrickT 2017-12-18 20:13:37

回答

7

從Koshke對GGPLOT2工作和他的博客(Koshke's blog

... + theme(legend.key.height=unit(3,"line")) # Change 3 to X 
... + theme(legend.key.width=unit(3,"line")) # Change 3 to X 

類型theme_get()在控制檯中看到其他編輯的傳說屬性。

+9

感謝您的建議和鏈接到Koshke的博客!不幸的是,這似乎改變了箱子的大小,但不是物品之間的間距。 – overflowname 2012-07-06 18:53:23

+0

您可能能夠用某種類型的疊加grob「僞造」它。但我不認爲這是一種在傳說中獲得額外空間的方法。這是我可以在ggplot2的郵件列表中找到的唯一提及:https://groups.google.com/forum/?fromgroups#!topic/ggplot2/PhkJpP8zJuM – 2012-07-09 00:33:15

+1

我可以使用它來成功地增加圖例之間的間距。使用負數有助於減少圖例之間的間距。 – Nova 2017-12-20 15:45:31

28

現在optsggplot2包過時,功能theme應該使用:

library(grid) # for unit() 
... + theme(legend.key.height=unit(3,"line")) 
... + theme(legend.key.width=unit(3,"line")) 
+9

該解決方案改變了盒子的高度/寬度,而不是它們之間的間距。 – 2016-01-14 23:31:27

30

,我使用水平傳說添加空間一個簡單的修復,只需在標籤中添加空格(見下提取):

scale_fill_manual(values=c("red","blue","white"), 
        labels=c("Label of category 1   ", 
          "Label of category 2   ", 
          "Label of category 3")) 
+8

這是迄今爲止唯一回答這個問題的答案!這可能對許多條目有幫助:'scale_fill_manual(values = values,labels = setNames(paste(labels,「」),entries))''。 – SaschaH 2016-02-16 12:43:34

+0

技術上不是很好,特別是當你必須將這些空間引入因子水平時,但這是唯一的工作解決方案。 – 2017-12-04 14:08:00

37

我認爲最好的辦法是使用guide_legendguides

p + guides(fill=guide_legend(
       keywidth=0.1, 
       keyheight=0.1, 
       default.unit="inch") 
    ) 

注意使用default.unit,不需要加載grid包。

+1

這需要更多upvotes,其他答案已過時。 – 2015-10-30 04:43:21

+2

這不適用於geom_bar圖表 – timat 2017-01-03 11:08:57

+1

這可能適用於橫向圖例。但是,對於我的情節右側的垂直圖例,這隻會增加鍵的高度,而不會增加鍵之間的間距。我的傳奇鑰匙仍然非常接近彼此。 – 2017-07-24 18:49:26

6

在水平圖例中添加條目之間間距的方式應該要調整主題元素legend.text的邊距。例如,爲了增加空間24PT到每個圖例標籤的右側,對於ggplot對象p

p + theme(legend.text = element_text(margin = margin(r = 24, unit = "pt"))) 

不幸的是,上述不起作用,因爲legend.text不傳遞給element_textmargin值響應(legend.title也沒有)。這是一個已知的錯誤:https://github.com/tidyverse/ggplot2/issues/1502

直到bug被修復,添加圖例項目之間間距的最簡單的選項似乎是用空格填充標籤本身,如user2568648 and SaschaH所示。

0

使用以下任一

legend.spacing = unit(1,"cm") 
legend.spacing.x = unit(1,"cm") 
legend.spacing.y = unit(1,"cm") 
相關問題