如何强制ggplot在图例上显示更多关卡?

时间:2017-11-16 16:50:38

标签: r ggplot2

我正在尝试创建一个复杂的ggplot图,但有些东西没有按预期工作。

我已经提取了有问题的部分,点的创建及其相关的图例。

library(data.table)
library(ggplot2)
lev <- c("A", "B", "C", "D") # define levels.
bb <- c(40, 30,20,10,5)/100 # define breaks.
ll <- c("40%","30%","20%","10%","5%") # labels.
# Create data
nodos <- data.table(event = c("A", "B", "D", "C", "D"), ord = c(1, 2, 3, 3, 4),
NP = c(0.375, 0.25, 0.125, 0.125, 0.125))


ggplot() + geom_point(data=nodos,aes(x=ord, 
 y=event, size=NP), color="black", shape=16) +
 ylim(lev)  + scale_size_continuous(name="Prop.",
 breaks=bb, labels=ll, range=c(0,6))+ 
 scale_x_continuous(limits=c(0.5, 4.5),
 breaks=seq(1,4,1))

enter image description here

正如您所看到的,无论我使用什么断裂和标签,我都无法强制ggplot绘制包含0%或10%的图例。 scale_size_continuous只创建了两个元素 并且较小的点非常难以扩展。

我也尝试过scale_scale_area,但它也不起作用。

我正在使用R 3.4.2和ggplot2 2.2.1(也尝试了最新的github版本)。

我怎样才能得到它?

1 个答案:

答案 0 :(得分:3)

如果您将limits设置为包含breaks,则可以更改图例。目前大部分breaks都超出了规模的默认限制。

ggplot() + 
    geom_point(data = nodos,
               aes(x = ord, y = event, size = NP), color="black", shape = 16) +
    scale_size_continuous(name = "Prop.",
                          breaks = bb,
                          limits = c(.05, .4),
                          labels = ll,
                          range = c(0, 6) )

enter image description here