更新时间:2023-09-23 19:52:58
想法是使用 cut()
创建分割点,但是按照您的需要指定标签。 / p>
通过将图例置于图底部, ggplot
自动将图例标签置于值之间。
library(ggplot2)
dat
dat $ col dat $ z,
breaks = c(0,2,4,6,8,10,Inf),
labels = c(2,4,6,8,10, - >)
)
ggplot(dat,aes(x,y,col = col))+
geom_point(size = 10)+
sca le_colour_brewer(,palette =Greens)+
主题(legend.position =bottom)
I usually plot maps using GrADS, and usually I use a color legend that in the plot will look like this:
I would like to do the same using ggplot2 in R. If using simply:
g <- g + scale_fill_brewer(palette="Greens", na.value="NA", name=legendtitle)
#g is the previously saved plot with some simple options, prepared with cut()
The output is of course this:
So I'd like to be able to do two things:
EDIT: Using help from the answer below, I've come to this:
Part 1. of my question is almost solved, even if it does not look perfect. I'd really like to get rid of the white space between the colors, any idea? Part 2... I have no idea whatsoever.
My code snippet uses:theme(legend.position="bottom", legend.key.width = unit(1, "cm"), legend.key.height = unit(0.3, "cm")) + guides(fill=guide_legend(label.position = "bottom", label.hjust = 1.2))
Here is something to get you started.
The idea is that you use cut()
to create the cut points, but specify the labels in the way you desire.
By putting the legend at the bottom of the plot, ggplot
automatically puts the legend labels "in between" the values.
library(ggplot2)
dat <- data.frame(x=0:100, y=runif(101, 0, 10), z=seq(0, 12, len=101))
dat$col <- cut(
dat$z,
breaks=c(0, 2, 4, 6, 8, 10, Inf),
labels=c(2, 4, 6, 8, 10, "-->")
)
ggplot(dat, aes(x, y, col=col)) +
geom_point(size=10) +
scale_colour_brewer("", palette="Greens") +
theme(legend.position="bottom")