R 灵活重复填充调色板
我希望创建一个基于变量级别的填充频率图。此变量的级别比我希望使用的填充调色板中的颜色多:R 灵活重复填充调色板,r,ggplot2,R,Ggplot2,我希望创建一个基于变量级别的填充频率图。此变量的级别比我希望使用的填充调色板中的颜色多:scale\u fill\u economist()。填充主要用于便于解释,因此并非所有级别的颜色都需要唯一。因此,我希望循环使用3种颜色 我遇到两个问题: 1) 我的绘图包括一个NAs级别,我无法通过我想出的方法(我在下面包括)来着色。 2) 虽然我使用的当前数据集表示19个级别(包括NA级别),但我希望定期重新创建绘图,以便添加更多级别。因此,我希望代码具有灵活性。我当前的代码是硬编码的 我成功完成的可复
scale\u fill\u economist()
。填充主要用于便于解释,因此并非所有级别的颜色都需要唯一。因此,我希望循环使用3种颜色
我遇到两个问题:
1) 我的绘图包括一个NAs级别,我无法通过我想出的方法(我在下面包括)来着色。
2) 虽然我使用的当前数据集表示19个级别(包括NA级别),但我希望定期重新创建绘图,以便添加更多级别。因此,我希望代码具有灵活性。我当前的代码是硬编码的
我成功完成的可复制示例:
library(ggplot2)
library(ggthemes)
Tempfreq <- structure(list(Var1 = structure(c(1L, 2L, 3L, 4L, 5L, 6L, 7L,
8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, NA), .Label = c("A",
"B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N",
"O", "P", "Q", "R"), class = "factor"), Freq = c(4L, 1L, 3L,
1L, 1L, 1L, 3L, 1L, 1L, 1L, 1L, 1L, 7L, 3L, 4L, 1L, 4L, 2L, 27L
)), .Names = c("Var1", "Freq"), row.names = c(NA, -19L), class = "data.frame")
ggplot(data=Tempfreq, aes(x=Var1, y=Freq, fill=Var1)) +
geom_bar(stat='identity') + guides(fill=FALSE) + xlab("Level") + ylab("Frequency") + ggtitle("Title") +
geom_text(aes(label=Freq), vjust = 0.5, hjust= -1, size=4, family="ITC Officina Sans") +
coord_flip() + theme_economist() +
scale_fill_manual(values=c(rep(economist_pal(fill=TRUE)(3), times=length(Tempfreq$Var1)/3), economist_pal(fill=TRUE)(1)))
库(ggplot2)
图书馆(主题)
Tempfreq这对你有用吗
首先,我们将因子Var1的级别更改为包含“缺失”,并将“NA”改为“缺失”:
强制NA
达到R无法识别为NA的水平。
levels(Tempfreq$Var1) <- c(levels(Tempfreq$Var1),"Missing")
Tempfreq$Var1[is.na(Tempfreq$Var1)] <- "Missing"
mycols <- rep(economist_pal(fill=TRUE)(3),length.out=nrow(Tempfreq))
ggplot(data=Tempfreq, aes(x=Var1, y=Freq, fill=Var1)) +
geom_bar(stat='identity') + guides(fill=FALSE) + xlab("Level") + ylab("Frequency") + ggtitle("Title") +
geom_text(aes(label=Freq), vjust = 0.5, hjust= -1, size=4, family="ITC Officina Sans") +
coord_flip() + theme_economist() +
scale_fill_manual(values=mycols)