我在R中使用ggplot2来构建一些测试结果的直方图。现在我对表Glucose_Results2进行逐年分析,它有一个Value列和一个Year列(以及很多行)。
Gval2 <- read.csv('Glucose_Results2.csv', sep = ',', header=T)
Gdist = qplot(Value, binwidth=10, data=Gval2, geom="histogram",
main="Distribution of Glucose Levels",
xlab="Glucose Levels in mg/dl",
ylab="Frequency")
Gval2$Year = factor(Gval2$Year)
Gdist + facet_wrap( ~ Year)
这给了我2005年到2012年的情节。我有兴趣改变这些图的颜色方案,以表明每年的参考范围内的值(见下文)。因此,对于2005年,我希望70到110之间的值为红色,而超出该范围的区域可以保持黑色。
> Gref2
REFERENCE_LOW REFERENCE_HIGH REFERENCE_YEAR
1 70 110 2005
2 70 110 2006
3 70 110 2007
4 70 110 2008
5 70 110 2009
6 70 100 2010
7 70 100 2011
8 70 100 2012
只有几周的R经验,我真的不知道该怎么做。
理想情况下,这将包括参考高和参考低的标签,或者红色=参考范围内的影响,但我并不过分担心。我想要的是一个解决方案,它读取上表并根据直方图的年份选择合适的参考范围(但如果归结为它,我可以手动输入数字)。
感谢您阅读本文和任何回复!
答案 0 :(得分:4)
使用ggplot来控制颜色,最简单的方法是将一个变量放入数据框中,该数据框指示它所属的组(内部或外部参考范围组)。这可以通过一系列步骤来完成。首先,针对每种情况,根据年份匹配适当的限制。
Gboth <- merge(Gval2, Gref2, by.x="Year", by.y="REFERENCE_YEAR")
对于Gval2
的每一行,匹配Gref2
的相应行,并通过Year
中的Gval2
列与{{1}匹配来定义相应的REFERENCE_YEAR
行。 } Gref2
中的列。然后可以使用值和参考限制制作指标列。我已经把它作为一个标记因素,以便以后更容易,但这不是绝对必要的。
Gboth$within <- factor(Gboth$REFERENCE_LOW < Gboth$Value &
Gboth$Value <= Gboth$REFERENCE_HIGH,
levels = c(FALSE, TRUE),
labels = c("Outside reference range",
"Within reference range"))
现在我可以使用这个变量来指定颜色(实际上是填充,因为直方图颜色是条纹周围线条的颜色,填充条纹是填充条纹)。此外,我已将qplot
翻译为完整ggplot
语法。 qplot
有助于从plot
命令转换,直到您更熟悉语法,但它并不具有表现力。如果你是从头学习,你也可以跳过它。
ggplot(Gboth, aes(x=Value)) +
geom_histogram(aes(fill=within), binwidth=10) +
facet_wrap( ~ Year) +
scale_x_continuous("Glucose Levels in mg/dl") +
scale_y_continuous("Frequency") +
scale_fill_manual("", breaks=c("Outside reference range",
"Within reference range"),
values = c("black", "red")) +
opts(title = "Distribution of Glucose Levels")
对于Gval2
的某些组合值,我得到的图形看起来像