Мне нужна помощь, чтобы понять, почему столбцы печатаются неправильно при использовании barp()
, когда я вручную устанавливаю аргумент ylim
.
По сути, у меня есть вектор значений (для аргумента высоты), который содержит только положительные числовые значения, но я хочу, чтобы у оси y barp () было задано ограничение по оси y, скажем, [-100500].Когда я установил y-предел, который переходит от отрицательного к положительному, barp()
создает большие бары, которые начинаются с самого низа, даже если они должны начинаться только с нулевой линии.
Я попытался воспроизвести точныйбары, используя оригинальную функцию barplot()
, и я получаю именно то, что хотел.Тем не менее, я предпочитаю использовать функцию plotrix barp()
, потому что 1) она создает нулевую линию оси x (что я не знаю, как это сделать на barplot()
) и 2) barp()
позволяет мне наносить столбцы и линии натот же график, в то время как barplot()
не выравнивает добавленные линии с полосами.
Ниже я написал некоторый код, вызывающий проблему.Сюжет рисунка 2 является проблематичным, на который я хочу обратить внимание.Я хочу создать изображение, как на рисунке 4, но с использованием barp()
.Если это невозможно, я бы согласился на использование barplot()
, если бы было возможно создать линию оси x (где была бы нулевая линия).
Я пытался прочитать документацию, но не нашел ничего, что могло бы объяснить эту проблему.Может ли кто-нибудь помочь мне определить, почему одна функция барплота работает, а другая - нет?
Спасибо!
library(plotrix)
test.vector.mixed = as.numeric(c(-200,-20,50,170,200,250,200,220,205,230,350))
test.vector.positives = as.numeric(c(200,20,50,170,200,250,200,220,205,230,350))
months.index.abb = month.abb[c(8:12,1:6)]
# this displays correctly
barp(
test.vector.mixed,
names.arg = months.index.abb,
col = ifelse(test.vector.mixed < 0, "red", "#108a4c"),
main = "Figure 1: barp() test with Negatives",
ylim = c(-500,400)
)
# this does not display correctly
barp(
test.vector.positives,
names.arg = months.index.abb,
col = ifelse(test.vector.positives < 0, "red", "#108a4c"),
main = "Figure 2: barp() test with Positives",
ylim = c(-500,400)
)
# this displays correctly
barplot(
test.vector.mixed,
names.arg = months.index.abb,
col = ifelse(test.vector.mixed < 0, "red", "#108a4c"),
main = "Figure 3: barplot() test with Negatives",
ylim = c(-500,400)
)
# this is what I want barp() to do
barplot(
test.vector.positives,
names.arg = months.index.abb,
col = ifelse(test.vector.positives < 0, "red", "#108a4c"),
main = "Figure 4: barplot() test with positives",
ylim = c(-500,400)
)