0

我是新的 R 用户,无法在条形图中绘制一些数据。如果这真的很容易做到,请提前抱歉,我就是想不通。我有六组数据:1、5 和 10 年的 1 号汽车的 3 个数据集,以及 1、5 和 10 年的 2 号汽车的 3 个数据集,其中每个年龄的每辆车的测量值将包括1.) 计算汽车外部的凹痕总数和 2.) 去除油漆的凹痕数量。我想制作一个有 6 个条形图的箱线图,对应于每辆车及其各自的年龄,其中列高是去除油漆的凹痕总数,带有标准偏差条形图。到目前为止,这是我一直在尝试的(仅包括 2 个数据集):

car1yr1 = c(rep(0, 101), rep(1, 9)) #car has 9 dents that remove paint

car1yr5 = c(rep(0, 131), rep(1, 19)) #car has 19 dents that remove paint

sd1 = sd(car1yr1)

sd2 = sd(car1yr5)

stdv = c(sd1, sd2)

car1yr1 = car1yr1[1:150]

dentsCar1 = data.frame("Car1Yr1" = car1yr1, "Car1Yr5" = car1yr5)

barplot(as.matrix(dentsCar1, ylim = c(0, 50), beside = TRUE))

我找到了一个错误栏示例:arrows(bar, x, bar, x+ -(stdv), length = 0.15, angle = 90),但我无法让它与我的数字一起使用。此外,在此示例中,y 轴停止在 15,但条形 Car1Yr5 一直到 19。如何绘制 20 或 30 的 y 轴?同样,我是 R 的新手,任何帮助都将不胜感激。我一直在尝试自己解决这个问题大约 2 周。谢谢。

4

1 回答 1

0

我对您的数据感到有些困惑...我从您的示例中假设汽车 1 有 101 个没有去除油漆的凹痕和 9 个去除油漆的凹痕,而汽车 2 有 131 个没有去除的凹痕和 19 个去除了油漆的凹陷。

现在计算凹痕数量的标准偏差对我来说没有多大意义......你正在绘制计数数据,所以你不应该有任何标准偏差,除非你有很多相同型号的汽车并且你想要查看汽车之间的差异。

最好的办法是计算去除油漆的凹痕百分比:

car1yr1 = c(rep(0, 101), rep(1, 9)) #car has 9 dents that remove paint
car1yr5 = c(rep(0, 131), rep(1, 19)) #car has 19 dents that remove paint

# The total number of observations is the total number of dents
total.dents.1 <- length(car1yr1)
total.dents.5 <- length(car1yr5)
# The dents that remove paint are marked as 1, the others with 0, 
# so we can just sum all of the data to get the number of paint-removing dents
dents.paint.1 <- sum(car1yr1)
dents.paint.5 <- sum(car1yr5)
# Alternatively you can use
# dents.paint.1 <- length(which(car1yr1==1))
# Calculate the %
dents.paint.perc.1 <- dents.paint.1/total.dents.1
dents.paint.perc.5 <- dents.paint.1/total.dents.5

df <- data.frame(dents.paint.perc.1, dents.paint.perc.5)

# Plot the data. 
# ylim specifies the limits of the y axis
# ylab defines the axis title. 
# las=1 puts the labels on the y axis horizontally
# names defines the labels on the x axis
barplot(as.matrix(df)*100, ylim=c(0,20), 
        ylab="% dents removing paint", las=1,
        names=c("Car 1 year 1", "Car 1 year 5"))

一般来说,将所有数据放在一个列表中会更好,这样您就可以使用*apply函数族对所有数据集执行重复操作。这将为您提供更清晰、更易于管理的代码。此外,如果您添加更多数据,它会自动将其添加到绘图中。

于 2013-09-22T18:06:40.627 回答