使用scale_x_discrete()删除图形的左侧(从0到13)

时间:2015-09-26 17:04:14

标签: r graphics ggplot2

可以在此处下载数据: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。但是,它看起来像那样 discrete
在左侧有空间。

如果我使用scale_x_continuous(),则左边的空格会消失,但是bar之间的分隔也会消失。 continue

我想摆脱左侧的空间,从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()

结果:
age_hist

1 个答案:

答案 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,您将数据强制到右侧。