При вызове geom_violin
внутри ggplot2
вы можете указать, что площадь каждой скрипки должна быть пропорциональна количеству наблюдений, составляющих эту скрипку, указав scale="count"
.
Я предполагаю, что это работает внутренне, беря некоторую общую площадь (назовем эту сумму X) и пропорционально разделяя ее между всеми скрипками, которые нужно нанести на график. Это то, что я хочу, за исключением того, что это может привести к довольно узким скрипкам, если между группами существует достаточно существенное различие в N, так что некоторые группы имеют относительно низкое N. В моем случае это просто делает цвет заливки трудно увидеть.
Я думаю, что это можно в значительной степени решить, по крайней мере, в моем случае, просто немного расширив X, чтобы действительно маленькие скрипки получили достаточно места, чтобы их можно было прочитать. Другими словами, я хочу сохранить разницу в площади между скрипками в зависимости от количества наблюдений, но увеличить "пул" общей площади, разделенной между скрипками, чтобы каждая из них стала немного больше.
Кто-нибудь знает, как это можно сделать? Для этого должен быть переключатель. Я пытался возиться с аргументами geom_violin
, такими как width
, size
, violinwidth
и т. д., но пока безуспешно...
РЕДАКТИРОВАТЬ: код для скучного, но воспроизводимого набора данных «образец», с которым можно экспериментировать.
y = runif(100, 1, 10)
x = as.factor(rep(c(1,2), times=50))
z = as.factor(c(rep(1, 10), rep(2, 90)))
df=data.frame(x, y, z)
ggplot(df, aes(x=x, y=y, fill=z)) + geom_violin(scale="count")
width
в скобкахgeom_violin
. - person Marek Židek   schedule 12.07.2017width
отмечен в справке как вычисляемая переменная; другие в этом списке, такие какcount
иviolinwidth
, игнорируются, когда я включаю их в вызовgeom_violin
. Итак, я не уверен, почемуwidth
не игнорируется, поскольку это не аргумент функции. Кроме того, мне непонятно, что делаетwidth
... для меня значения выше ~ 1,5 меняют не только форму моих скрипок, но и их положение и ориентацию на графике. Есть идеи, что там происходит? - person Bajcz   schedule 13.07.2017