单独或通过美学轻推/重新定位geom_labels?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单独或通过美学轻推/重新定位geom_labels?相关的知识,希望对你有一定的参考价值。
我正在尝试使用ggplot()绘制对一系列李克特式问题的回答。我使用dplyr为每个问题计算了每个响应的比例(“非常同意”,“同意”等),现在想要在堆积条形图中绘制比例(每个问题一个条)。下面的代码给出了我到目前为止的想法。
library(ggplot2)
dat <- data.frame(Question = "Q1",
Response = LETTERS[1:5],
freq = c(.01, .03, .11, .35, .5),
offset = c(.5, .25, 0, 0, 0))
ggplot(dat, aes(x = Question, y = freq, fill = Response, label = Response)) +
geom_col() +
geom_label(position = position_stack(vjust = 0.5))
我需要为显示比例的每个响应添加标签;我的问题出现了,因为很少有受访者不同意/非常不同意,这意味着这些回复的条形太小而不能包含标签(参见示例中的A和B),并且它们重叠。
我想将固定数量的特定响应的标签偏移,以便它们不重叠。直观地说,我希望这样的东西能起作用:
ggplot(dat, aes(x = Question, y = freq, fill = Response, label = Response)) +
geom_col() +
geom_label(position = position_stack(vjust = 0.5), nudge_x = offset)
但是这会返回“错误:你必须指定position
或nudge_x
/ nudge_y
。”
我尝试过使用vjust美学,但这并没有足够的标签来解决问题。
关于如何通过美学重新定位geom_labels的任何建议?如果您需要任何其他信息,请告诉我们!
答案
1.“错误:您必须指定任一位置或nudge_x / nudge_y。”
错误是非常明显的,你不能将nudge_x
与position_stack
结合使用其中一个或另一个,因为两者都是相同的position
参数的选项:
if (!missing(nudge_x) || !missing(nudge_y)) {
if (!missing(position)) {
stop("You must specify either `position` or `nudge_x`/`nudge_y`.", call. = FALSE)
}
position <- position_nudge(nudge_x, nudge_y)
}
2.关于如何通过美学重新定位geom_labels的任何建议?
dat <- data.frame(Question = "Q1",
Response = LETTERS[1:5],
freq = c(.01, .03, .11, .35, .5),
offset = c(.03, 0, 0, 0, 0))
ggplot(dat, aes(x = Question, y = freq, fill = Response, label = Response)) +
geom_col() +
geom_label(aes(y = freq + offset), position = position_stack(vjust = 0.5))
您可以通过在aes
调用中再次调用geom_label
来更改美学,这里我将offset
添加到原始频率(请注意,我还更改了数据框中的偏移值以生成更好的绘图):
以上是关于单独或通过美学轻推/重新定位geom_labels?的主要内容,如果未能解决你的问题,请参考以下文章