如何在 R 中的条形图中显示每个条形图的值(不使用 ggplot)?
How to display the values of every single bar in a barplot in R (without using ggplot)?
我是 R 的初学者,感谢到目前为止提供的帮助,我设法使用下面的代码创建了以下条形图。但是,有一个问题仍然悬而未决,即使阅读了类似问题中提供的所有答案,我仍无法解决它。
代码:
res <- data.frame( aggregate( rentals ~ weatherCond + season, bikes, sum ))
res$weatherCond <- ordered(res$weatherCond,
levels = c(1, 2, 3, 4),
labels = c("Clear", "Fog", "Snow", "Storm"))
res$season <- factor(res$season,
levels = c(1, 2, 3, 4),
labels = c("Winter", "Spring", "Summer", "Autumn"))
par(mar=c(10,4,2,1)+.5)
barplot(res[,"rentals"], names=apply( res[,1:2], 1, function(x) paste0(x[1],"_",x[2]) ), las=3, main = "Weather and Rentals", ylab = "Rentals", col = c('blue', 'red', 'green', 'grey')[res$weatherCond])
该图根据天气条件(3 个变量)可视化租用自行车数量与季节之间的联系。图中的条形图显示租用的自行车数量,分为相应的 SEASON/WEATHER 组合。
我的问题:
我究竟应该如何修改上面的代码,以便可以显示每个条的值的计数(在条中或在条的顶部)?每个柱状图代表出租数量。
更新:
我设法通过添加以下代码行来显示这些值:
y <- as.matrix(res$rentals)
text(b, y+2, labels=as.character(y)) <!-- the "b" is the barplot -->
然而,结果却是惨不忍睹。有没有办法让它看起来更好?
barplot()
returns 每个柱的中点(参见 ?barplot
)。这可以与函数 text()
结合使用以显示数字。
如果是你的情况,它将变成:
mid_points <- barplot(res[,"rentals"], ...)
text(x = mid_points, y = res[,"rentals"], text = res[,"rentals"])
可以使用其他参数来修改数字的位置。
由于我没有你的数据,我使用了一个修改过的 base R 示例:
b <- barplot(GNP ~ Year, data = longley, ylim = c(0, 700))
text(
x = b,
y = longley$GNP,
labels = round(longley$GNP, 1),
pos = 3,
srt = 90,
offset = 1.5
)
我是 R 的初学者,感谢到目前为止提供的帮助,我设法使用下面的代码创建了以下条形图。但是,有一个问题仍然悬而未决,即使阅读了类似问题中提供的所有答案,我仍无法解决它。
代码:
res <- data.frame( aggregate( rentals ~ weatherCond + season, bikes, sum ))
res$weatherCond <- ordered(res$weatherCond,
levels = c(1, 2, 3, 4),
labels = c("Clear", "Fog", "Snow", "Storm"))
res$season <- factor(res$season,
levels = c(1, 2, 3, 4),
labels = c("Winter", "Spring", "Summer", "Autumn"))
par(mar=c(10,4,2,1)+.5)
barplot(res[,"rentals"], names=apply( res[,1:2], 1, function(x) paste0(x[1],"_",x[2]) ), las=3, main = "Weather and Rentals", ylab = "Rentals", col = c('blue', 'red', 'green', 'grey')[res$weatherCond])
该图根据天气条件(3 个变量)可视化租用自行车数量与季节之间的联系。图中的条形图显示租用的自行车数量,分为相应的 SEASON/WEATHER 组合。
我的问题: 我究竟应该如何修改上面的代码,以便可以显示每个条的值的计数(在条中或在条的顶部)?每个柱状图代表出租数量。
更新: 我设法通过添加以下代码行来显示这些值:
y <- as.matrix(res$rentals)
text(b, y+2, labels=as.character(y)) <!-- the "b" is the barplot -->
然而,结果却是惨不忍睹。有没有办法让它看起来更好?
barplot()
returns 每个柱的中点(参见 ?barplot
)。这可以与函数 text()
结合使用以显示数字。
如果是你的情况,它将变成:
mid_points <- barplot(res[,"rentals"], ...)
text(x = mid_points, y = res[,"rentals"], text = res[,"rentals"])
可以使用其他参数来修改数字的位置。 由于我没有你的数据,我使用了一个修改过的 base R 示例:
b <- barplot(GNP ~ Year, data = longley, ylim = c(0, 700))
text(
x = b,
y = longley$GNP,
labels = round(longley$GNP, 1),
pos = 3,
srt = 90,
offset = 1.5
)