如何强制ggplot在图例上显示更多级别?

ska*_*kan 5 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))
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

如您所见,无论使用什么中断和标签,我都无法强制ggplot绘制包含0%或10%的图例。scale_size_continuous只会创建两个元素。
较小的点的缩放比例非常差。

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

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

我怎么才能得到它?

aos*_*ith 8

如果您将 设置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) )
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明