我正在为客户编写图表,并且样式要求图例(a)放置在绘图区域内,(b)将填充映射到带标签的填充矩形。我目前的尝试看起来像这样:
library(ggplot2)
library(dplyr)
data(diamonds)
diamonds %>%
group_by(color, cut) %>%
summarise(price = mean(price)) %>%
#
ggplot(aes(x = color, y = price, fill = cut)) +
geom_bar(stat = "identity",
position = "dodge") +
theme_bw() +
annotate("rect", xmin = "D", xmax = "E", ymin = 6000, ymax = 6500, fill = "red") +
annotate("text", x = 1.5, y = 6250, label = "Fair")
(颜色为“红色”而非ggplot红色的事实无关紧要:手动设置颜色。另外,显然我需要其他填充变量的标签)
这已足够,但我想知道:
annotate
更自动的解决方案吗?答案 0 :(得分:0)
简短的回答是否定的,没有办法“自动检测将图例放在图中的正确位置”,至少没有总是工作的地方。在某些时候,你必须自己摆弄它。
您可以通过以下内容将默认图例移动到图中:
diamonds %>%
group_by(color, cut) %>%
summarise(price = mean(price)) %>%
#
ggplot(aes(x = color, y = price, fill = cut)) +
geom_bar(stat = "identity",
position = "dodge") +
theme_bw() +
theme(legend.position = c(0.25,0.8),
legend.direction = "horizontal")
如果这对你很有吸引力。