我有以下情节:
m <- structure(list(Var1 = structure(c(1L, 2L, 3L, 4L, 5L, 6L, 7L,
1L, 2L, 3L, 4L, 5L, 6L, 7L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 1L, 2L,
3L, 4L, 5L, 6L, 7L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 1L, 2L, 3L, 4L,
5L, 6L, 7L, 1L, 2L, 3L, 4L, 5L, 6L, 7L), .Label = c("FE", "AG",
"NO", "SPH", "SEP", "H/I", "CMP"), class = "factor"), Var2 = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, …Run Code Online (Sandbox Code Playgroud) 我有一个堆积的条形图,标有geom_text。为了增加标签的可见性,我想根据标签背景的“暗度”(即条形的填充色)将标签颜色设置为白色或黑色。因此,较深的条应带有白色标签,而较浅的条应带有黑色标签。
我从问题显示代码开始,该问题在ggplot2中的堆叠条形图上显示数据值,问题的答案R中是否有浅色或深色函数?。最重要的是,我想显示数据值的标签为“白色”或“黑色”,分别取决于堆叠的条形填充颜色是深色还是深色。
我做了两次尝试。第一个是函数的使用aes(colour=...),geom_text但是这个函数失败了……为什么?
第二次尝试是使用函数scale_colour_manual。但是在这里,堆叠的条形线也使用黑色或白色切换设置“着色”。
library(ggplot2)
library(RColorBrewer)
Year <- c(rep(c("2006-07", "2007-08", "2008-09", "2009-10"), each = 4))
Category <- c(rep(c("A", "B", "C", "D"), times = 4))
Frequency <- c(168, 259, 226, 340, 216, 431, 319, 368, 423, 645, 234, 685, 166, 467, 274, 251)
Data <- data.frame(Year, Category, Frequency)
isDark <- function(color) {
(sum(grDevices::col2rgb(color) *c(299, 587,114))/1000 < 123)
}
## control the color assignments
paletteName <- 'Set1' # …Run Code Online (Sandbox Code Playgroud) 在这个特定 viridis 选项的条形图中,是否可以设置颜色,即使对于刻度的较暗选项,也可以清晰地显示图表内的数字?
library(ggplot2)
Year <- c(rep(c("2006-07", "2007-08", "2008-09", "2009-10"), each = 4))
Category <- c(rep(c("A", "B", "C", "D"), times = 4))
Frequency <- c(168, 259, 226, 340, 216, 431, 319, 368, 423, 645, 234, 685, 166, 467, 274, 251)
Data <- data.frame(Year, Category, Frequency)
ggplot(Data, aes(x = Year, y = Frequency, fill = Category, label = Frequency)) +
geom_bar(stat = "identity") +
geom_text(size = 3, position = position_stack(vjust = 0.5)) + scale_fill_viridis_d(option = "magma")
Run Code Online (Sandbox Code Playgroud) 如何改变ggplot中文本的颜色?例如,我有一个堆积条形图。当背景为浅蓝色或绿色时,我想将标签设置为黑色。
这是一个毫无意义的虚拟样本:
library(dplyr)
library(ggplot2)
df <- mpg %>%
mutate(cyl = as.character(cyl)) %>%
group_by(model, cyl) %>%
summarize(hwy = mean(hwy), .groups = "keep") %>%
ungroup() %>%
group_by(model) %>%
mutate(hwy = round(hwy / sum(hwy), 2)) %>%
ungroup() %>%
head(11) %>%
mutate(color = case_when(cyl == "4" ~ "white",
cyl == "6" ~ "black",
cyl == "8" ~ "black"))
df %>%
ggplot(data = ., aes(x = model, y = hwy, fill = cyl, label = hwy)) +
geom_bar(stat = "identity", position = "fill") +
geom_text(color …Run Code Online (Sandbox Code Playgroud)