我是R和ggplot2的新手。我正在使用ISLR包中的College数据集。当我制作直方图并用aes填充(fill = Private)时,我会得到以下图表。 这个情节非常具有误导性,因为如果我创建一个Private的表我会得到
否是
212 565
但是从ggplot2创建的直方图可以被解释为具有更多" No"而不是"是"。 参考课程有下图,它正确地描述了"是"并且"否",但根据直方图的创建者,它是使用较旧版本的ggplot2生成的。请注意,我看到了统计数据的差异,但这并没有消除这篇文章的目标。
问题是如何生成这个直方图以产生描绘正确的"是"和"不"如第二个直方图中所示,新版本的ggplot2?
我已查看其他几个SO帖子,例如for stacks,more stacks,for barplots, here,和 from ggplot2,但我还没有看到直方图的答案。 我已尝试使用dplyr包安排和R顺序功能,但无济于事。
这是我的R代码
library(ISLR)
library(ggplot2)
library(dplyr)
df<-College
ggplot(df,aes(F.Undergrad))+geom_histogram(aes(fill=Private),bins = 50,color='black',alpha=0.5)+theme_bw()
答案 0 :(得分:2)
如果我理解正确,您需要做的就是重新排序df $ Private的因子级别:
df$Private <- relevel(df$Private, "Yes")
ggplot(df, aes(F.Undergrad)) +
geom_histogram(aes(fill = Private),
bins = 50,
color = 'black',
alpha = 0.5) +
theme_bw()
信息基本相同,因为条形图是堆叠的。如果您不希望这样,请遵循@ Tino的建议并使用position = "dodge"
ggplot(df, aes(F.Undergrad)) +
geom_histogram(aes(fill = Private),
bins = 50,
color = 'black',
alpha = 0.5,
position = "dodge") +
theme_bw()
position = identity
:
ggplot(df, aes(F.Undergrad)) +
geom_histogram(aes(fill = Private),
bins = 50,
color = 'black',
alpha = 0.5,
position = "identity") +
theme_bw()
答案 1 :(得分:0)
plot1<- ggplot(df, aes(F.Undergrad, fill=factor(Private, levels = c("Yes", "No")))) + geom_histogram(binwidth=5)+
scale_fill_manual(values=c("#d7191c", "#fdae61"),
name="Private",
labels=c("Yes","No"))+
我用它来按级别对直方图进行排序。可能适用于您的代码。