Построение диаграмм рассеяния с парами в R в логарифмической шкале с данными, содержащими нули

Я пытаюсь построить несколько пар диаграмм рассеяния, используя «пары». Мой фрейм данных выглядит так:

    >e
    X Y Z
    0 0 0
    2 3 4
    0 3 4
    3 3 3

Здесь совершенно стандартный фреймворк данных.

Я использую это для построения своих точечных диаграмм, опять же, ничего особенного:

pairs(~X+Y+Z, data=e, log="xy")

Он отлично работает, но не рисует метки. Однако, если я удалю log="xy" в команде, метки будут отображаться красиво. Так что я думаю, это связано с тем, что я хочу, чтобы мои диаграммы рассеяния были в логарифмическом масштабе.

Итак, мой вопрос, что мне делать? Должен ли я заранее удалить все строки с нулями (как вы это делаете?) Есть ли волшебный трюк, который позволит мне пометить log = "xy" и мои диаграммы рассеяния?

Пожалуйста, дайте мне знать, если это не ясно.


person Benoit B.    schedule 20.01.2011    source источник


Ответы (1)


Вы проигнорировали это (где я назвал ваш фрейм данных DF):

R> pairs(~X+Y+Z, data=df, log="xy")
There were 30 warnings (use warnings() to see them)

и если вы посмотрите на эти тридцать предупреждений, вы увидите, что

  • вы не можете отображать данные, содержащие нули, в логарифмической шкале (и я думаю, вы знаете, почему)

  • log не является распознаваемым параметром для pairs()

Поэтому, если вы хотите, чтобы парный график отображался в журналах, вам, возможно, придется взять журналы самостоятельно (и либо добавить небольшой эпсилон, либо использовать преобразование, например log(1 + x), и вызвать pairs() для этих данных.

Изменить Проще всего, наверное, pairs(~X+Y+Z, data=log(1+DF))

person Dirk Eddelbuettel    schedule 20.01.2011
comment
Хотя это странное поведение. На самом деле он действительно отображает данные в логарифмическом масштабе, все выглядит нормально, за исключением того, что в нем отсутствуют метки. Аналогичный результат происходит с plot(df, log="xy"), где log является (предположительно?) допустимым параметром для plot(). - person Ken Williams; 09.10.2012
comment
Кроме того, не придирайтесь, потому что ваше решение - лучшее, что я знаю, но pairs(~X+Y+Z, data=log(1+DF)) нежелательно изменит метки оси на зарегистрированную шкалу. - person Ken Williams; 09.10.2012