作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道是否有人可以帮我解决这个问题:我想将 ggplot2 geom_tile 热图中各个列的宽度设置为不同的值。
library(ggplot2)
library(data.table)
ggplot(data = melt(as.matrix(mtcars))) + geom_tile(aes(x=Var2, y=Var1,fill = value))
我希望第一列 (mpg) 的宽度为 5,第二列为 2,等等。
谢谢
最佳答案
geom_tile()
有一个 width
参数,您可以使用它以编程方式设置宽度。但是您必须小心,因为如果您没有明确说明标签的放置位置,它们最终会出现在有趣的地方。因此我根据指定的宽度预先计算每个标签的位置。在这里,您还必须知道这些列的顺序,以便它们正确显示。
library(tidyverse)
# set widths of each column and calculate position for lables and boxes
widths <- tibble(param = fct_inorder(names(mtcars)),
width = c(5, 2, rep(1, 9)),
x_end = cumsum(width),
x_pos = x_end - width/2
)
# plot and specify precalculated labels
mtcars %>%
rownames_to_column("car") %>%
pivot_longer(-car, "param") %>%
left_join(., widths) %>%
ggplot(aes(x_pos, car, fill = value)) +
geom_tile(aes(width = width)) +
scale_x_continuous(breaks = widths$x_pos, labels = widths$param)
#> Joining, by = "param"
由 reprex package 创建于 2022-02-14 (v2.0.1)
关于r - 如何在 geom_tile 中设置单独的列宽(在 ggplot2 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71116216/
我是一名优秀的程序员,十分优秀!