2015-03-21 2 views
1

Я пытаюсь создать штрих-код в сочетании с графиком, но у меня есть проблемы, центрирующие все графики, так что они соответствуют оси x. Я хочу ярлыки на барах (им пришлось подвергать их цензуре;)) и точки обоих графиков, центрированные по типу x-axis.Как получить координату x в barplot в R

Я действительно не понимаю, почему клещи оси x имеют правильную центрировку с помощью баров, но все остальное имеет неравноценный характер таким образом (хотя я использую одну и ту же переменную x, чтобы расположить их оба).

Как я могу сосредоточить их все вместе.

Вот код, который я сделал для черчения (изображение производит ниже):

#### base sytem 
    par(mar = rep(4, 4)) 
    barData <- con 
    y <- lineData <- CPL 
    z <- CPLmax 
    x <- barplot(barData, 
       axes = FALSE, 
       col = "green", 
       xlab = "", 
       ylab = "", 
       ylim = c(0, max(con) * 1.1)) 
    axis(1, at = x, labels = timeline) 
    axis(4, at = NULL) 
    par(new = TRUE) 
    plot(x = x, y = y, type = "b", col = "blue", axes = FALSE, xlab = "", ylab = "", ylim = c(0, max(CPL) * 1.1)) 
    lines(x = x, y = z, type = "b", col = "red", axes = FALSE, ylab = "", ylim = c(0, max(CPL) * 1.1)) 
    axis(2, at = NULL) 
    text(x = x, y = 3, labels = barData, pos = 1) 
    abline(v= x, col="purple") 
    print(x) 
    print(y) 
    box() 

http://i.stack.imgur.com/Vvpxz.png

ответ

3

В качестве альтернативы ответу @ JTT вы можете исправить ошибку e xlim params:

con <- setNames(runif(12), seq(as.Date("2014-01-01"), as.Date("2014-12-31"), "month")) 
xlim <- c(0, length(con)*1.25) 
x <- barplot(con, col = "green", xlab = "", ylab = "", ylim = c(0, max(con) * 1.1), axes = FALSE, xlim = xlim) 
par(new = TRUE) 
plot(x = x, type = "b", y = runif(12), xlim = xlim, xlab = "", ylab = "", axes = FALSE) 
abline(v = x, col = "red") 
+0

Это абсолютно блестяще. Спасибо. –

0

Вы перезагружаем систему координат сюжета при вызове par(new=TRUE). Это смещает новые добавленные элементы, когда они нарисованы поверх существующего барплота. Опустите par(), а вместо plot() сразу же используйте lines(), как и на следующей строке.

В качестве примера, вместо этого:

d<-1:10 
x<-barplot(d) 
y<-d+rnorm(10) 
par(new=TRUE) 
plot(x, y, type="b") 

, а сделать это:

d<-1:10 
x<-barplot(d) 
y<-d+rnorm(10) 
lines(x, y, type="b") 

Или, если нужны разные оси для различных элементов на участке, вы можете рассмотреть вопрос о создании х -axis явно, например:

d<-1:10 
x<-barplot(d, xlim=c(0,12)) 
y<-d+rnorm(10) 
par(new=TRUE) 
plot(x, y, type="b", xlim=c(0,12)) 
+0

Ok. Я вижу, что это выравнивает все по типу x-axis, и это прогресс мэра. Однако проблема в том, что мне нужно иметь линейные графики разного масштаба, чем штрих-код (эквивалент второй оси Excel). Вот почему я использую par (new = TRUE). Есть ли что-нибудь, что я могу сделать, чтобы сохранить правильные x-координаты barplot? –

+0

Я немного отредактировал ответ, чтобы привести пример этого. –