【发布时间】:2021-10-21 07:28:00
【问题描述】:
我正在构建一个 ggplot 可视化,其中一些填充美学有很长的变量名,而其他变量名很短。添加长名称会更改对应于长文本的图例键的大小 - 将其延长以匹配文本。我想知道是否有办法标准化所有变量的图例键高度,并更改图例项之间的空格。
我尝试修改 theme(legend.key.height()) 和 theme(legend.key.width()) 但这并没有解决问题。
这里是示例代码:
#load neccesary package
library('ggplot2')
#create the dataframe
df <- data.frame(year = as.integer(c(1, 1, 1, 1, 1, 2, 2, 2, 2, 2)),
class = c('A', 'B', 'C', 'D', 'E'),
value = c(50, 50))
#Create plot
g <- ggplot(df, aes(x = year, y = value, fill = class)) +
geom_col(position = 'stack') +
scale_fill_discrete(labels = c('This is an\nextremely\nlong label\nname', 'short label1', 'Another\nlong\nlabel\nname', 'short label3', 'short label4'))
情节:
我想要的是所有变量都具有相同的键大小,键之间的空格会发生变化以适应长文本。所以看起来像这样:
正在尝试g + theme(legend.key.height = unit(3, 'mm'), legend.key.width = unit(3, 'mm'))
不能解决问题。
有什么想法吗?
【问题讨论】:
-
尝试添加
theme(legend.key.height=unit(2, "cm")) -
@Duck,谢谢,但这只会使所有图例键变大。我想让它们都变小(我有大量的变量来适应图像)。
-
在这种情况下,您将不得不调整图例中文本的大小!
-
@Duck:我尝试编辑问题以更清楚地说明我想要什么作为解决方案。本质上,我想保持所有内容相同,但只需将密钥设为通用大小,这将需要在标题名称较长的情况下扩展空格。
-
对于那些可能希望获得较少参与的解决方案的人,这是github.com/tidyverse/ggplot2/issues/3669 跟踪的一个已知问题。目前(2021 年 11 月)它在 ggplot 3.4.0 里程碑中开放。