可以在此处下载数据:https://docs.google.com/spreadsheets/d/1McbcquHdsdlEM_yPfBQHeX_CpUcARAm1I3VtASNsY3k/edit?usp=sharing
这是我的代码
# load data
raw_data <- read.csv("Sleep vs reaction time (Responses) - Form Responses 1.csv")
library(ggplot2)
#histogram
qplot(x = Age, data = raw_data, xlim = c(13,43), geom = "histogram") + scale_x_continuous()
qplot(x = Age, data = raw_data, xlim = c(13,43), geom = "histogram") + scale_x_discrete()
我想按年龄绘制直方图。
它是离散值(年龄是整数)所以我使用scale_x_discrete来分隔bar。但是,它看起来像那样
在左侧有空间。
如果我使用scale_x_continuous(),则左边的空格会消失,但是bar之间的分隔也会消失。
我想摆脱左侧的空间,从0到13,但保持在吧之间。请告诉我如何。
谢谢。
我的解决方案:
感谢@Gregor,这是我的解决方案:
raw_data$Age = factor(raw_data$Age) #convert Age column to factor
qplot(x = Age, data = raw_data, geom = "histogram") + scale_x_discrete()
结果:
答案 0 :(得分:3)
您应该让数据类确定比例是离散的还是连续的。 ggplot
没有对整数比例的内置支持,因为它与数字比例不同,所以如果你想要一个离散比例,你应该将你的年龄数据转换为factor
(如果它还没有) :
raw_data$Age_factor = factor(raw_data$Age)
如果不指定xlim
,则默认设置会为您提供所需内容。
qplot(x = Age_factor, data = raw_data, geom = "histogram")
这有点令人困惑,但实际上你的xlim = c(13, 43)
正在将图表向右移动。在离散比例上,13和43表示第13和第43个离散级别,因此通过设置那些xlim,您将数据强制到右侧。