0

以前は完全に機能していた古いコードは、0.9.3 では機能しなくなりました。この問題は、ファセット、フリー スケール、座標反転の使用に関連しています。

再現する方法は次のとおりです。

データセット: d.csv:

"Priority","Owner","Project"
"Medium","owner7","Team4"
"Medium","owner1","Team1"
"Low","","Team3"
"High","owner6","Team3"
"Medium","","Team4"
"Medium","owner3","Team1"
"Medium","owner2","Team1"
"Medium","owner5","Team2"
"Low","owner4","Team2"
"Critical","","Team2"
"Medium","owner2","Team1"
"High","","Team4"

コード:

data <- read.csv(file="d.csv",head=TRUE)
attach(data)

p3 <- ggplot(data,aes(x=Owner,fill=Priority))+
geom_bar(aes(y=..count..)) + 
facet_wrap(~ Project, nrow=2, scales="free") +
opts(legend.position="none") 

これによりファセット プロットが作成されますが、軸を反転する必要があります。以前は coord_flip() を追加するとうまくいきましたが、新しい ggplot ではフリー スケールと coord_flip を一緒に使用できなくなりました。ファセット軸を回転させる他の方法はありますか? フリースケールは私にとって重要です。ご指摘ありがとうございます。

4

3 に答える 3

1

私がこの問題に遭遇したのは、これが 2 回目か 3 回目です。カスタム geom を定義することで、独自のソリューションをハッキングできることがわかりました。

geom_bar_horz <- function (mapping = NULL, data = NULL, stat = "bin", position = "stack", ...) {
  GeomBar_horz$new(mapping = mapping, data = data, stat = stat, position = position, ...)
}

GeomBar_horz <- proto(ggplot2:::Geom, {
  objname <- "bar_horz"

  default_stat <- function(.) StatBin
  default_pos <- function(.) PositionStack
  default_aes <- function(.) aes(colour=NA, fill="grey20", size=0.5, linetype=1, weight = 1, alpha = NA)

  required_aes <- c("y")

  reparameterise <- function(., df, params) {
    df$width <- df$width %||%
      params$width %||% (resolution(df$x, FALSE) * 0.9)
    OUT <- transform(df,
              xmin = pmin(x, 0), xmax = pmax(x, 0),
              ymin = y - .45, ymax = y + .45, width = NULL
    )
    return(OUT)
  }

  draw_groups <- function(., data, scales, coordinates, ...) {
    GeomRect$draw_groups(data, scales, coordinates, ...)
  }
  guide_geom <- function(.) "polygon"
})

これは、ggplot2 github から geom_bar コードをコピーし、x参照とy参照を切り替えて、標準のデカルト コーディネーターで水平棒グラフを作成するだけです。

これを機能させるには、おそらく and も使用する必要があることに注意してください。ID 以外の位置を使用する必要がある場合は、適切に機能するように衝突機能を編集する必要があります。position='identity'stat='identity'

于 2014-07-10T21:15:58.730 に答える
1

2016 年後半の更新: のこのバグはcoord_flipfacet_gridscales="free"開発バージョンで修正されましたggplot2。でインストールできます

install.packages("devtools")
devtools::install_github("hadley/ggplot2")

必要に応じてと の両方free_xを試してください。座標を反転させたときの意味と意味が常に明確であるとは限らないためです。free_yxy

于 2016-10-19T06:29:30.847 に答える
0

あなたが要求していることは(私が質問を正しく理解していれば)、以前に開発者に提起されたようで、彼らはそれを実装しません。ここを参照してください:

https://github.com/hadley/ggplot2/issues/95

したがって、回避策を見つける必要があると思います。「facet_wrap」の代わりに使用facet_gridすると、coord_flip() が機能するはずです。次に、画像をpdf(またはsvg)として保存し、プロットをある種のベクターグラフィックソフトウェアで再配置します-Inkscapeをお勧めします...

于 2013-05-16T14:59:39.503 に答える