geom_boxplot с несколькими группами и вложенными внутри - geom_point с position_jitter и несколькими формами [duplicate]

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

>>> "%.2f" % 3.14159
'3.14'
>>> "%.2f" % 13.9499999
'13.95'

И, наконец, хотя, возможно, самое главное, если вы хотите точная математика, тогда вы не хотите плавать вообще. Обычный пример - это деньги и хранить центы как целое.

24
задан Sandy Muspratt 8 May 2012 в 12:47
поделиться

2 ответа

EDIT: Лучшее решение с ggplot2 версии 1.0.0 с помощью position_jitterdodge. См. Ответ @Didzis Elferts. Обратите внимание, что dodge.width управляет шириной уклонения, а jitter.width управляет шириной дрожания.

Я не уверен, как код создавал график в pdf.

Но что-то вроде этого приближает вас к тому, что вам нужно?

Преобразуем tailindex и memorypar в числовые; добавьте их вместе; и результатом является координата x для слоя geom_jitter. Вероятно, есть более эффективный способ сделать это. Кроме того, я хотел бы видеть, как уклонение geom_boxplot и geom_jitter и без дрожания приведет к созданию графика в pdf.

library(ggplot2)
dodge <- position_dodge(width = 0.9)
ex5$memorypar2 <- as.numeric(ex5$tailindex) + 
  3 * (as.numeric(as.character(ex5$memorypar)) - 0.2) 

p <- ggplot(ex5,aes(x=tailindex , y=hillest)) +
   scale_x_discrete() +
   geom_jitter(aes(colour = memorypar, x = memorypar2), 
     position = position_jitter(width = .05), alpha = 0.5) +
   geom_boxplot(aes(colour = memorypar), outlier.colour = NA, position = dodge) +
   facet_wrap(~ process, nrow = 2)
p

enter image description here [/g0]

30
ответ дан Sandy Muspratt 26 August 2018 в 14:35
поделиться

В версии ggplot2 1.0.0 есть новая позиция с именем position_jitterdodge(), созданная для такой ситуации. Это положение должно использоваться внутри geom_point(), и внутри aes() должно быть fill=, чтобы показать, какой переменной уклониться от ваших данных. Для управления шириной аргумента уклонения dodge.width= следует использовать.

ggplot(ex5,aes(x=tailindex ,y=hillest,color=memorypar,fill=memorypar))  + 
      facet_wrap(~process,nrow=2) + 
      geom_point(position=position_jitterdodge(dodge.width=0.9)) +
      geom_boxplot(fill="white",outlier.colour = NA, 
                        position = position_dodge(width=0.9))

enter image description here [/g0]

48
ответ дан Didzis Elferts 26 August 2018 в 14:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: