Большинство чисел не могут быть точно представлены в поплавках. Если вы хотите округлить число, потому что это то, что требуется вашей математической формуле или алгоритму, то вы хотите использовать раунд. Если вы просто хотите ограничить отображение определенной точностью, тогда даже не используйте раунд и просто не форматируйте его как эту строку. (Если вы хотите отобразить его с помощью некоторого альтернативного метода округления, и есть тонны, то вам нужно смешать два подхода.)
>>> "%.2f" % 3.14159
'3.14'
>>> "%.2f" % 13.9499999
'13.95'
И, наконец, хотя, возможно, самое главное, если вы хотите точная математика, тогда вы не хотите плавать вообще. Обычный пример - это деньги и хранить центы как целое.
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
[/g0]
В версии 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))
[/g0]