Аблайн не подходит к графику - PullRequest
0 голосов
/ 28 мая 2020

Я пытаюсь добавить аблайн-график к графическому графику c, но ось 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")]

И вот что я получаю:

enter image description here

В идеале аблайн (v = 1) должен появиться в центре первой полосы, и поэтому одна . Но масштаб вертикальной оси x кажется короче, чем у гистограммы. Есть идеи, как мне подобрать их обоих?

Большое спасибо! Лорена

1 Ответ

2 голосов
/ 28 мая 2020

Проблема в том, что barplot автоматически добавляет пробел 0,2 перед каждой полосой. Это означает, что у вас есть два варианта. Один из них - избавиться от пробелов, а затем вычесть 0,5 из значения каждого abline, чтобы оно соответствовало центру полосы:

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")

enter image description here

The other option is to leave the spaces by starting at 0.7 and incrementing by 1.2 for each bar:

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)

чтобы получить нужные строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...