平均、2 sdエラーバー、1.5 IQRエラーバー、3e 25e、50e、75eおよび97eセンチメイルを含むレイを計算する新しいgeomを作成しました。バイオリンのベースでの観測。統計情報のリストに基づく複合ジオメトのaesの使用に関する問題
# domestic functions
#~~~~~~~~~~~~~~~~~~~
IQR.interval.min <- function(vector)
{
quantile(vector, 0.25) - 1.5 * IQR(vector) ;
} ;
IQR.interval.max <- function(vector)
{
quantile(vector, 0.75) + 1.5 * IQR(vector) ;
} ;
SD.interval.min <- function(vector)
{
mean(vector) - 2 * sd(vector) ;
} ;
SD.interval.max <- function(vector)
{
mean(vector) + 2 * sd(vector) ;
} ;
# My geom
geom_ray <- function(... ,
violin.param = list(draw_quantiles = c(0.03, 0.25, 0.5, 0.75, 0.97),
scale = "count"),
point.param = list(),
IQR.param = list(colour = "black", width = 0.2),
mean.param = list(shape = 18, size = 4, colour = "darkgrey",
position = position_nudge(x = 0.12)),
SD.param = list(colour = "darkgrey", width = 0.2,
position = position_nudge(x = 0.12))
)
{
# graph
#~~~~~~
# Parameters
param <- list(...) ;
violin.param <- modifyList(param, violin.param) ;
point.param <- modifyList(param, point.param) ;
IQR.param <- modifyList(param, IQR.param) ;
mean.param <- modifyList(param, mean.param) ;
SD.param <- modifyList(param, SD.param) ;
# Stats
violin.gg <- do.call("stat_ydensity",
modifyList(list(geom = GeomViolin,
position = "dodge"),
violin.param)) ;
point.gg <- do.call("stat_identity",
modifyList(list(geom = GeomPoint,
position = "identity"),
point.param)) ;
IQR.gg <- do.call("stat_summary",
modifyList(list(fun.ymin = "IQR.interval.min",
fun.ymax = "IQR.interval.max",
geom = GeomErrorbar,
position = "identity"),
IQR.param)) ;
mean.gg <- do.call("stat_summary",
modifyList(list(fun.y = "mean",
geom = GeomPoint),
mean.param)) ;
SD.gg <- do.call("stat_summary",
modifyList(list(fun.ymin = "SD.interval.min",
fun.ymax = "SD.interval.max",
geom = GeomErrorbar),
SD.param)) ;
# Output
#~~~~~~~
return(list(violin.gg,
point.gg,
IQR.gg,
mean.gg,
SD.gg
)
)
} ;
ジオムの外側にエースを使用するとうまく動作します。私はGEOMの内側にAESを使用する場合
# i.e.
vector1 <- rnorm(200, 10, 20) ;
factor1 <- factor(sample(c("homme", "femme"), 200, TRUE, c(0.4,0.6))) ;
data.frame(factor1 = factor1, vector1 = vector1) ->
df1
require(dplyr) ; require(ggplot2) ;
df1 %>%
ggplot(.) +
aes(x = factor1, y = vector1) +
geom_ray()
はしかし、それが実行されていない:
df1 %>%
ggplot(.) +
geom_ray(aes(x = factor1, y = vector1))
# Return:
Erreur : stat_ydensity requires the following missing aesthetics: x, y
誰かが私がそれをしてください修正する助けてもらえますか? ...
はそれであなたのマッピングオブジェクトを持っていますが、それは、引数名のない単なるオブジェクトであり、あなたの失敗例で
:
おかげ
ありがとうございます。私の最初の問題を解決するには、マッピング= NULLとデータ= NULLを私のルーメンに追加してくださいts。 –