正如 Henrik 所说,您需要将数据纳入一个因素(至少这是实现这一目标的最简单方法)。考虑以下带有一些虚假数据的示例...
#generate 1000 random uniform integers between 1 and 5
data <- floor(runif(1000, 1,6))
#make data a factor with given labels
fdata <- factor(data,
labels = c("No use",
"30 min",
"1 hour",
"2 hours",
"3+ hours"))
这可以在带有 plot 的 base r 中完成(未指定 y 时不需要条形图)
#in base R, just use plot - when y is missing, barplot is produced
plot(fdata)
您也可以在 ggplot2 中绘图
#in ggplot2
require(ggplot2)
#make a dataframe
df <- data.frame(id = seq(1:length(fdata)),
fdata = fdata)
#plot via geom_bar
ggplot(df, aes(fdata)) + geom_bar()
从您的原始示例开始,除了指定级别之外,您还需要ordered=TRUE
如下所示进行设置。否则,“无用”仍会显示在您的列表末尾。
#get data into a factor (provided data plus "No use")
q1 <- c("No use"
,"1 hour"
,"1 hour"
,"30 min"
,"2 hours"
,"3+ hours"
,"3+ hours"
,"3+ hours"
,"3+ hours"
,"2 hours"
,"1 hour"
,"2 hours"
,"1 hour"
,"30 min")
q1f = factor(q1,
levels = c("No use",
"30 min",
"1 hour",
"2 hours",
"3+ hours"),
ordered=TRUE)
然后你可以应用上面显示的情节逻辑......