有沒有辦法改變ggplot2中的圖例項之間的間距?我目前有有沒有辦法改變ggplot2中的圖例項之間的間距?
legend.position ="top"
它會自動產生一個水平的圖例。然而,物品的間距非常接近,我想知道如何將它們分開更遠。
有沒有辦法改變ggplot2中的圖例項之間的間距?我目前有有沒有辦法改變ggplot2中的圖例項之間的間距?
legend.position ="top"
它會自動產生一個水平的圖例。然而,物品的間距非常接近,我想知道如何將它們分開更遠。
從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()
在控制檯中看到其他編輯的傳說屬性。
感謝您的建議和鏈接到Koshke的博客!不幸的是,這似乎改變了箱子的大小,但不是物品之間的間距。 – overflowname 2012-07-06 18:53:23
您可能能夠用某種類型的疊加grob「僞造」它。但我不認爲這是一種在傳說中獲得額外空間的方法。這是我可以在ggplot2的郵件列表中找到的唯一提及:https://groups.google.com/forum/?fromgroups#!topic/ggplot2/PhkJpP8zJuM – 2012-07-09 00:33:15
我可以使用它來成功地增加圖例之間的間距。使用負數有助於減少圖例之間的間距。 – Nova 2017-12-20 15:45:31
現在opts
在ggplot2
包過時,功能theme
應該使用:
library(grid) # for unit()
... + theme(legend.key.height=unit(3,"line"))
... + theme(legend.key.width=unit(3,"line"))
該解決方案改變了盒子的高度/寬度,而不是它們之間的間距。 – 2016-01-14 23:31:27
,我使用水平傳說添加空間一個簡單的修復,只需在標籤中添加空格(見下提取):
scale_fill_manual(values=c("red","blue","white"),
labels=c("Label of category 1 ",
"Label of category 2 ",
"Label of category 3"))
這是迄今爲止唯一回答這個問題的答案!這可能對許多條目有幫助:'scale_fill_manual(values = values,labels = setNames(paste(labels,「」),entries))''。 – SaschaH 2016-02-16 12:43:34
技術上不是很好,特別是當你必須將這些空間引入因子水平時,但這是唯一的工作解決方案。 – 2017-12-04 14:08:00
我認爲最好的辦法是使用guide_legend
內guides
:
p + guides(fill=guide_legend(
keywidth=0.1,
keyheight=0.1,
default.unit="inch")
)
注意使用default.unit
,不需要加載grid
包。
這需要更多upvotes,其他答案已過時。 – 2015-10-30 04:43:21
這不適用於geom_bar圖表 – timat 2017-01-03 11:08:57
這可能適用於橫向圖例。但是,對於我的情節右側的垂直圖例,這隻會增加鍵的高度,而不會增加鍵之間的間距。我的傳奇鑰匙仍然非常接近彼此。 – 2017-07-24 18:49:26
在水平圖例中添加條目之間間距的方式應該要調整主題元素legend.text
的邊距。例如,爲了增加空間24PT到每個圖例標籤的右側,對於ggplot對象p
:
p + theme(legend.text = element_text(margin = margin(r = 24, unit = "pt")))
不幸的是,上述不起作用,因爲legend.text
不傳遞給element_text
margin
值響應(legend.title
也沒有)。這是一個已知的錯誤:https://github.com/tidyverse/ggplot2/issues/1502
直到bug被修復,添加圖例項目之間間距的最簡單的選項似乎是用空格填充標籤本身,如user2568648 and SaschaH所示。
使用以下任一
legend.spacing = unit(1,"cm")
legend.spacing.x = unit(1,"cm")
legend.spacing.y = unit(1,"cm")
這將是非常有用的當前解決這個現在'opts'折舊。 – geotheory 2014-06-03 09:30:38
在這裏:https://pastebin.com/NnxMiTeH – PatrickT 2017-12-18 20:13:37