我正在尝试制作一个直方图,其中x轴为年龄,y轴为0或1(真或假)
person = c(1:50)
age = sample(1:5,50,replace=T)
drunk = sample(0:1,50,replace=T)
df = data.frame(person,age,drunk)
#plots that I tried:
ggplot(df, aes(x = age, y = drunk)) +
geom_bar(stat="identity")
hist(df$age)
barplot(df$drunk, names.arg=df$age)
这些情节对我不起作用。我想要的是:X轴应该看起来像50个数字,范围从1-5,Y轴应该是0或1(真或假)
df$drunk <- as.character(df$drunk)
df$drunk[df$drunk == "0"] <- "False"
df$drunk[df$drunk == "1"] <- "True"
我尝试使用上面的代码制作一个情节,但它没有用。
例如http://i.imgur.com/c2DoEha.png。每个人在情节中都有一个随机年龄,并显示他是否被喝醉(0 - 1或真/假)
答案 0 :(得分:2)
你需要:
aes
中的x更改为person
factor(drunk)
aes
到您的y
scale_y_discrete
以使用TRUE和FALSE而不是1和0标记y轴。使用scale_x_discrete
中的辅助函数添加person
以将age
刻度标签更改为相应的label
,并将限制设置为person
中的df
变量。
ggplot(df, aes(x = person, y = factor(drunk))) +
geom_bar(stat="identity") +
labs(x = "Age", y = "Drunk") +
scale_y_discrete(labels = c("FALSE","TRUE")) +
scale_x_discrete(limits = seq(min(df$person), max(df$person)), labels = function(x) df[df$person == x,]$age)
答案 1 :(得分:0)
这对你有用吗</ p>
ggplot(df,aes(x=person,y=age,fill=factor(drunk))) + geom_bar(stat='identity')