Hmisc пакет действует странно числовой = / = символ - PullRequest
0 голосов
/ 26 апреля 2011

Я пытаюсь наложить панели ошибок поверх столбцов, и это работает нормально, за исключением того, что панели ошибок вычисляют сами, поэтому любые отсутствующие значения x нарушают график. как вы можете видеть здесь: http://flyordie.sin.khk.be/r/asnumeric.PNG

Когда я изменяю свои значения x на символы (as.character (xvalues)), происходит следующее: http://flyordie.sin.khk.be/r/ascharacter.PNG

Оси X и Y меняются местами. Что я могу сделать по этому поводу? Потому что я не могу думать ни о чем другом.

Чтобы воспроизвести похожую проблему, вот 2 сценария

нормальный

set.seed(1)
x <- 1:10
y <- x + rnorm(10)
delta <- runif(10)
errbar( x, y, y + delta, y - delta )

символы

set.seed(1)
x <- 1:10
y <- x + rnorm(10)
delta <- runif(10)
errbar( as.character(x), y, y + delta, y - delta )

С уважением Сэр Ксилем

1 Ответ

0 голосов
/ 26 апреля 2011

Построение горизонтальных полос ошибок - это предполагаемое поведение для функции errbar(), когда аргумент x является фактором или символьной переменной, а не числовым.Когда вы говорите, что пропущенные значения x нарушают ваш график, я понимаю, что вы подразумеваете разрыв линий, соединяющих точки.Чтобы построить график ошибок без прерывания линий, я бы просто удалил наблюдения с пропущенными значениями x:

require(Hmisc)

## Your example data
set.seed(1)
x <- 1:10
y <- x + rnorm(10)
delta <- runif(10)

## Make some data vanish
x[c(5,6)] <- NA

## Create an index for non-missing observations in `x`
i <- which(!is.na(x))

errbar(x[i], y[i], y[i] + delta[i], y[i] - delta[i], type = "b")

Редактировать В соответствии с вашим комментарием ниже, если имена платформ просто предназначены дляБудь ваши метки для отметок по оси X, тогда как насчет следующего?

require(Hmisc)

## Your example data
set.seed(1)
# `x` should not contain missing values, and is not your platenames vector
x <- 1:10 
y <- x + rnorm(10)
delta <- runif(10)
# xticks represents your platenames vector with missing values
xticks <- c(1, 2, 3, 4, NA, NA, 7, 8, 9, 10)

errbar(x, y, y + delta, y - delta, type = "b")
axis(1, at = xticks, labels = xticks)

Однако, меня смущает, почему вы будете иметь наблюдения с отсутствующими отметками по оси X.Как подсказывает Андри, возможно, вы сможете уточнить, почему некоторые имена плат отсутствуют, и действительно ли они должны быть вашими значениями x, или это просто метки.Если они просто надписи, возможно, вы захотите добавить надписи к полям с помощью mtext():

errbar(x, y, y + delta, y - delta, type = "b")
mtext(text = xticks, side = 3, line = 2, at = xticks)

Настройка side и line на ?mtext для перемещения надписей.

...