如果轴标签包含特定文字,我会尝试将它们设为粗体。我试图对一个也是操纵我的数据的函数的输出的情节这样做,所以我的输入数据和输出中的标签顺序之间不再存在直接关系。因此添加theme(axis.text.y = element_text(face = ifelse(levels(df$category) == "xxx", "bold", "plain")))
不起作用(它将错误的标签变为粗体)。
作为一个具体的例子,如果我的虹膜种类只有this box plot花瓣长度作为对象,如果我不知道顺序,是否可以添加一个将“setosa”变为粗体的图层物种会出现在?
更新:一个可重现的例子:
library(tidyverse)
library(rlang)
test <- tribble(
~AreaName, ~Value,
"London", 1,
"New York", 5,
"Paris", 3
)
compare_areas <- function(data, area, value) {
area <- enquo(area)
value <- enquo(value)
newLevels <- data[order(data[[quo_text(value)]], decreasing = TRUE), ][[quo_text(area)]]
print(newLevels)
data[[quo_text(area)]] <- factor(data[[quo_text(area)]], levels = newLevels)
print(data)
p <- ggplot(data, aes_string(x = quo_text(area),
y = quo_text(value))) +
coord_flip() +
geom_col()
return(p)
}
compare_areas(data = test,
area = AreaName,
value = Value)
Plot output。例如,我想让巴黎大胆,但我不知道如何订购等级。
答案 0 :(得分:1)
您必须使用 df$category == "xxx"
。当您应用bold
时,您会获得与plain
中的行数一样多的df
,library(ggplot2)
ggplot(iris, aes(Species, Petal.Length)) +
geom_boxplot() +
theme(axis.text.x = element_text(face =
ifelse(levels(iris$Species) == "setosa", "bold", "plain")))
值。
iris
与length(ifelse(iris$Species == "setosa", "bold", "plain"))
[1] 150
length(ifelse(levels(iris$Species) == "setosa", "bold", "plain"))
[1] 3
数据集相同:
enum
答案 1 :(得分:0)
我会猜测并假设你所拥有的只是ggplot
对象本身,即在这之后:
library(ggplot2)
g1 <- ggplot(iris, aes(Species, Petal.Length)) +
geom_boxplot()
你只有g1
。由于用于渲染绘图的数据存储在g1
中,因此您可以根据@ Oliver的答案建立如下:
g1 + theme(axis.text.x = element_text(face =
ifelse(levels(g1$data$Species) == "setosa", "bold", "plain")))