R 使用ggplot2生成带有移位标签的颜色图例
我通常使用渐变绘制地图,通常我使用一个颜色图例,在绘图中显示如下: 我也希望在R中使用ggplot2。如果仅使用:R 使用ggplot2生成带有移位标签的颜色图例,r,ggplot2,R,Ggplot2,我通常使用渐变绘制地图,通常我使用一个颜色图例,在绘图中显示如下: 我也希望在R中使用ggplot2。如果仅使用: 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() g这里有一些东西可以让你开始 其思想是使用cut() 通过将图
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()
g这里有一些东西可以让你开始
其思想是使用cut()
通过将图例放在绘图底部,ggplot
自动将图例标签放在值之间
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")
库(ggplot2)
dat问题的第一部分可以用连续色标来解决。因此,除了离散的比例外,只需添加一个连续的颜色比例(可能需要重新标记)。然后你可以把离散比例放在顶部或底部,你应该被设置好。下面是一个可复制的示例:
require(scales)
nlvls <- nlevels(diamonds$cut)
ggplot(diamonds, aes(x = price, fill = cut)) +
geom_histogram(position = "dodge", binwidth = 1000) +
scale_fill_brewer(palette="Greens", na.value="NA", guide='none') +
theme(legend.position = 'bottom') +
geom_line(aes(x=price, y=0, color=as.numeric(cut)), linetype=0) +
scale_color_continuous(name = 'cont. scale',
low = brewer_pal(pal = "Greens")(nlvls)[1],
high = brewer_pal(pal = "Greens")(nlvls)[nlvls])
require(比例)
nlvls由于您没有提供最终要使用的几何图形,我对Andrie的答案做了一点修改。我包括了一个矩形几何图形(例如,geom\u col
)来填充完整的图例框。使用合适的α值0:1
关闭条形图
# data
set.seed(1324)
dat <- data.frame(x=0:100, y=runif(101, 0, 10), z=seq(0, 12, len=101))
# add discrete values
dat$col <- cut(include.lowest = T,
dat$z,
breaks=c(0, 2, 4, 6, 8, 10, Inf),
labels=c(2, 4, 6, 8, 10, "-->")
)
# the plot
ggplot(dat, aes(x,y,fill=col)) +
geom_point(aes(col=col),size=8, show.legend = F) +
geom_col(alpha=0)+
scale_fill_brewer("", palette = "Greens")+
scale_colour_brewer("", palette="Greens")+
scale_alpha_discrete(range=c(0,1))+
guides(fill = guide_legend(nrow=1, override.aes = list(alpha = 1),
label.position="bottom",
label.hjust = .5)) +
theme(legend.position="bottom",
legend.key.width = unit(3, "cm"),
legend.key.height = unit(1, "cm"))
#数据
种子集(1324)
在我的例子中,使用连续色标的dat会令人困惑。这不仅仅是一个条形图,而是一个2D世界地图,所以我需要清楚地定义标高,以便与其他地图轻松对峙。好的建议,谢谢。多亏了你的回答,我更新了我的问题。我对色彩传奇还不满意,tho。如果您还有任何建议,他们将不胜感激。请不要编辑您的问题,使其成为新问题。这可能会使已经提供的答案无效。我真的不知道我会怎么做。对我来说,这个问题看起来和以前一样,只是在归档目标的方式上更加具体(感谢编辑),即克隆上面用渐变生成的第一个图例。图例元素之间的间距由legend.margin
主题元素控制。@Biran如果我没弄错的话,这是在图例周围添加的空间,不是在单个图例元素之间。谢谢你的回答,但我不认为这比我在2014年11月的问题中的编辑更好。理想情况下,人们希望:a)颜色框之间的标签(可以这样做,但需要摆弄hjust
值,它们从来都不是完美的)和b)颜色框之间没有间距。