- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否可以有条件地填写这些[ggtext][1]
文本框?如果“拾取”,我们说颜色“红色”。
library(cowplot)
library(tidyverse)
library(ggtext)
ggplot(mpg, aes(cty, hwy)) +
geom_point() +
facet_wrap(~class) +
theme_half_open(12) +
background_grid() +
theme(
strip.background = element_blank(),
strip.text = element_textbox(
size = 12,
color = "white", fill = "#5D729D", box.color = "#4A618C",
halign = 0.5, linetype = 1, r = unit(5, "pt"), width = unit(1, "npc"),
padding = margin(2, 0, 1, 0), margin = margin(3, 3, 3, 3)
)
)
最佳答案
您可以拦截元素绘制例程并注入(inject)一些样式更改。
library(ggplot2)
library(cowplot)
library(rlang)
library(ggtext)
element_textbox_highlight <- function(..., hi.labels = NULL, hi.fill = NULL,
hi.col = NULL, hi.box.col = NULL) {
structure(
c(element_textbox(...),
list(hi.labels = hi.labels, hi.fill = hi.fill, hi.col = hi.col, hi.box.col = hi.box.col)
),
class = c("element_textbox_highlight", "element_textbox", "element_text", "element")
)
}
element_grob.element_textbox_highlight <- function(element, label = "", ...) {
if (label %in% element$hi.labels) {
element$fill <- element$hi.fill %||% element$fill
element$colour <- element$hi.col %||% element$colour
element$box.colour <- element$hi.box.col %||% element$box.colour
}
NextMethod()
}
ggplot(mpg, aes(cty, hwy)) +
geom_point() +
facet_wrap(~class) +
theme_half_open(12) +
background_grid() +
theme(
strip.background = element_blank(),
strip.text = element_textbox_highlight(
size = 12,
color = "white", fill = "#5D729D", box.color = "#4A618C",
halign = 0.5, linetype = 1, r = unit(5, "pt"), width = unit(1, "npc"),
padding = margin(2, 0, 1, 0), margin = margin(3, 3, 3, 3),
# this is new relative to element_textbox():
hi.labels = c("minivan", "suv"),
hi.fill = "#F89096", hi.box.col = "#A6424A", hi.col = "black"
)
)
library(ggplot2)
library(cowplot)
library(rlang)
library(ggtext)
element_textbox_highlight <- function(...,
hi.labels = NULL, hi.fill = NULL,
hi.col = NULL, hi.box.col = NULL,
hi.labels2 = NULL, hi.fill2 = NULL,
hi.col2 = NULL, hi.box.col2 = NULL) {
structure(
c(element_textbox(...),
list(hi.labels = hi.labels, hi.fill = hi.fill, hi.col = hi.col, hi.box.col = hi.box.col,
hi.labels2 = hi.labels2, hi.fill2 = hi.fill2, hi.col2 = hi.col2, hi.box.col2 = hi.box.col2)
),
class = c("element_textbox_highlight", "element_textbox", "element_text", "element",
"element_textbox_highlight", "element_textbox", "element_text", "element")
)
}
element_grob.element_textbox_highlight <- function(element, label = "", ...) {
if (label %in% element$hi.labels) {
element$fill <- element$hi.fill %||% element$fill
element$colour <- element$hi.col %||% element$colour
element$box.colour <- element$hi.box.col %||% element$box.colour
}
if (label %in% element$hi.labels2) {
element$fill <- element$hi.fill2 %||% element$fill
element$colour <- element$hi.col2 %||% element$colour
element$box.colour <- element$hi.box.col2 %||% element$box.colour
}
NextMethod()
}
ggplot(mpg, aes(cty, hwy)) +
geom_point() +
facet_wrap(~class) +
theme_half_open(12) +
background_grid() +
theme(
strip.background = element_blank(),
strip.text = element_textbox_highlight(
size = 12,
# unnamed set (all facet windows except named sets below)
color = "white", fill = "#5D729D", box.color = "#4A618C",
halign = 0.5, linetype = 1, r = unit(5, "pt"), width = unit(1, "npc"),
padding = margin(2, 0, 1, 0), margin = margin(3, 3, 3, 3),
# this is new relative to element_textbox():
# first named set
hi.labels = c("minivan", "suv"),
hi.fill = "#F89096", hi.box.col = "#A6424A", hi.col = "black",
# add second named set
hi.labels2 = c("compact", "pickup"),
hi.fill2 = "green", hi.box.col2 = "#A6424A", hi.col2 = "black"
)
)
关于r - 有条件地在 facet_wrap 中填充 ggtext 文本框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60332202/
有没有办法控制 facet_wrap() 图中单个图的大小/纵横比?谢谢, -D 最佳答案 是否可以简单地“释放”x 轴、y 轴或两者的解决方案scales与 scales = "free_x" ,
据我所知 facet_wrap按行填充。以同样的方式,您可以指定如何填充 matrix与 byrow我希望你可以用 facet_wrap 做同样的事情。我知道我可以重新排序一个因子的水平以这种方式绘制
我想生成一个facet_wrap,其中构面内因子的顺序是基于列因子顺序之一。问题的核心是每个组都有重复的因子水平,当我绘制时,facet_wrap 中仅正确排序了一个因子水平。 (见下图) 我尝试对每
简而言之:我想为使用 facet_wrap 制作的双面板图的每个“面板”设置单独的图例。使用 facet_wrap(scales="free") 在我想要不同的轴比例时效果很好,但不适用于点的大小。
如何让每个新行都以新的因子水平开始?目前它基于批处理和样本进行包装,但不会在新的批处理因子级别中断。尝试“facet_grid(~batch~sample)”时,有许多不需要的空面板。 R 的结果和
我正在尝试使用 facet_wrap 将标签(a、b、c...)添加到实际图的边缘之外的图。我希望将它们放在标签区域中,但与 facet_wrap 标签(这是数据组的名称)分开。我可以使用 coord
我正在尝试使用 facet_wrap 绘图,默认情况下按字母顺序排列绘图。但是,所需的结果是按数字降序排列。 下面是我得到的: library(tidyverse) M % ggplot(ae
我的目标是让图中所有国家之间的距离大致相等。例如,在第一类(增加)中,国家是分散的。另一方面,第二类和第三类国家之间的距离太近了。 这迫使我减小国家文本的大小(例如“IS”、“UK”...)和绘制的估
我正在使用 ggplot2 制作几个直方图和 facet_wrap并想在每个面板上绘制平均值。下面,我创建了一个虚拟数据框,找到每个方面的平均值,然后使用 geom_point 创建添加平均值的图。
我尝试根据与相应 facet_wrap 图中相同的数据,将直方图 suplots 添加到 facet_wrap 图的每个部分 geom_sf 图中。 我通过 Google 找到了一些方法,但到目前为止
在以下使用 facet_wrap , 双方 year和 model显示在绘图标签中。 library(tidyverse) mpg %>% filter(manufacturer=='audi')
我写了一个函数来绘制条形图。但是当我开始多面包装时,'~' 符号让事情变得困难。 rf.funct <- function(dat, predictor, feature){ ggplot(get
我有以下数据集: structure(list(Geschaeft = c(0.0961028525512254, 0.0753516756309475, 0, 0.0722803347280335,
假设我有这些数据: set.seed(100) mydf<- data.frame( day = rep(1:5, each=20), id = rep(LETTERS[1:4],25), x = r
我正在尝试在 ggplot 中创建图表使用 facet_wrap争论。 但是,我不想在每个小图上都有标签,我只想在图的顶部和左侧有一个标签。 例如在下图中,我想在顶部标签 SI2、SI1、WS2 和左
数据框 (借自 here): df.test <- data.frame(id = rep(1:6, each = 50), x = rnorm(50*6, mean = 10, sd = 5),
我的 ggplot 有以下代码 - facet_wrap 函数在页面上为每个 Name 绘制 20 个图,沿 x 轴有 5 个 Pcode。我想计算每个名称的平均 TE.Contr 并将该值绘制为每个
我试图实现的是让条形按每个面板的给定变量排序。 一个简单的例子: library(ggplot2) library(plyr) df <- data.frame(fac = c
我正在努力为 facet_wrap() 中的每个方面绘制渐变色标独立。 数据太大,无法在此处发布,但这是我的代码: ggplot(stack, aes(hour, day)) + geom_til
我正在尝试使用facet_wrap和ggplot2将多个标题添加到绘图中。说您例如拥有过去两年的季度数据,并且希望将季度数据与两个主要标题进行图形化比较; 2014年和2015年,以及相应季度的标题。
我是一名优秀的程序员,十分优秀!