首页 > 解决方案 > Abline 不适合条形图

问题描述

我正在尝试将斜线图添加到条形图,但 x 轴似乎不适合。

所以这是我的代码:

#Emotion im FB darstellen
y <- FB$Ärger[FB$Episode ==1] #Subset erstellen
data <- factor(y, levels = c(1:7)) #faktorisieren
table(data)
#barplot erstellen
barplot(table(data), 
        main = "E1 - Ärger", 
        xlab = "Rating", 
        ylab = "Häufigkeit",
        ylim = c(0, 8))

#w2v integrieren
abline(v=1,col="red")
abline(v=2,col="red")
abline(v=3,col="red")
abline(v=4,col="red")
abline(v=5,col="red")
abline(v=6,col="red")
abline(v=7,col="red")
abline(v=index(my.xts.data)[endpoints(my.xts.data, "days")]

这就是我得到的:

在此处输入图像描述

理想情况下 abline(v=1) 应该出现在第一个条的中心,依此类推。但是 abline x 轴的比例似乎比条形图的比例短。有什么想法可以让他们两个都合身吗?

非常感谢!洛雷娜

标签: rbar-chart

解决方案


问题是barplot在每个条之前自动添加 0.2 的空间。这意味着您有两个选择。一种是去掉空格,然后从每个值中减去 0.5abline以使其匹配到条形的中心:

Rating <- factor(c(1, 2, 2, 2, 2, 2, 3, 3, 4, 5), levels = 1:7)
barplot(table(Rating), 
        main = "E1 - Ärger", 
        xlab = "Rating", 
        ylab = "Häufigkeit", space = 0)
abline(v = seq(7) - 0.5, col = "red")

在此处输入图像描述

另一种选择是通过从 0.7 开始并为每个条增加 1.2 来保留空格:

barplot(table(Rating), 
        main = "E1 - Ärger", 
        xlab = "Rating", 
        ylab = "Häufigkeit")
abline(v = seq(0.7, 8, 1.2), col = "red")

在此处输入图像描述

为了使这更容易,您可以定义一个为您进行计算的函数:

add_vlines <- function(x) abline(v = (x * 1.2) - 0.5, col = "red")

所以你可以这样做:

add_vlines(1:7)

得到你正在寻找的线路。


推荐阅读