热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

将标签放置在binned/stepcolorbarguide中的bin中间?

推理:我想轻松使用现成的连续尺度(来自任何提供scale__continuous等的包),用于有序因子类数据,例如mtcars$cyl

推理:我想轻松使用现成的连续尺度(来自任何提供scale_..._continuous等的包),用于有序因子类数据,例如mtcars$cyl. 因为这些数据只包含几种离散值,我想直接标记图例键,而不是 bin 限制。怎么做?

library(ggplot2)
ggplot(mtcars, aes(mpg, disp, color = cyl))+
geom_point() +
scale_color_continuous(limits = range(mtcars$cyl),
guide = guide_colorsteps(ticks.colour = "black"))

不想要的:

hacky 方式,实际上是四个 (!) hacks,并且是不想要的。

# Hack 1 - create the colors manually from the palette. This is already annoying.
cont_col <- colorRampPalette(c("#132B43","#56B1F7"))(length(unique(mtcars$cyl)))
# Hack 2- you need to modify the underlying draw_key function
# from https://github.com/tidyverse/ggplot2/issues/2844
draw_key_polygon2 <- function(data, params, size) {
lwd <- min(data$size, min(size) / 4)
grid::rectGrob(
width = grid::unit(1, "npc"),
height = grid::unit(1, "npc"),
gp = grid::gpar(
col = data$colour,
fill = alpha(data$fill, data$alpha),
lty = data$linetype,
lwd = lwd * .pt,
linejoin = "mitre"
))
}
# Hack 3 discretise the variable
ggplot(mtcars, aes(mpg, disp, color = as.character(cyl))) +
geom_point(key_glyph = "polygon2") +
scale_color_manual(values = cont_col) +
# Hack 4 override aes to change the fill of the key glyph polygons
guides(color = guide_legend(override.aes = list(fill = cont_col)))

但这会导致所需的输出

由reprex 包( v2.0.0 )于 2021 年 5 月 2 日创建

回答

这是我能想到的最简单的方法。


  1. 将填充设置为after_scale(colour)与矩形键一起使用。

  2. 将中断设置为文字值并使用图例指南。

library(ggplot2)
ggplot(mtcars, aes(mpg, disp, color = cyl)) +
geom_point(aes(fill = after_scale(colour)), # set fill for rect key
key_glyph = draw_key_rect) + # rect key
scale_colour_continuous(
breaks = sort(unique(mtcars$cyl)),
guide = guide_legend()
)

由reprex 包(v1.0.0)于 2021 年 5 月 2 日创建






推荐阅读
author-avatar
月满西楼2502890155
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有