質問

私の同僚は、101のブルズアイチャートをプロットする必要があります。これは彼女の考えではありません。 Excelで彼女の奴隷を追い払うのではなく、神がこれらのことを作っていることを知っているのではなく、私はRでそれをすることを申し出ました。 ggplot2 では、バープロットを極座標にマッピングして簡単に確認できます。

しかし、問題が発生しています。データは既に集約されているため、Hadleyの例ここは私のために働いていません。これを行うためにカウントをファクターに拡張できますが、より良い方法があると感じています-geom_barにデータの読み取り方法を伝える方法があります。

データは次のようになります。

    Zoo Animals Bears Polar Bears
1 Omaha      50    10           3

動物園ごとにプロットを作成しますが、その部分は管理できます。

そしてここにその dput があります:

structure(list(Zoo = "Omaha", Animals = "50", Bears = "10", `Polar Bears` = "3"), .Names = c("Zoo", 
"Animals", "Bears", "Polar Bears"), row.names = c(NA, -1L), class = "data.frame")

注:動物> =クマ> =ホッキョクグマが重要です。また、彼女は町を出ているので、彼女から生データを取得することはできません(とにかく大きなファイルがあったとしても)。

役に立ちましたか?

解決

分解することなくこれを行う方法は、 geom_bar stat =" identity" を使用することです。

開始する文字列ではなく、数値を含むデータフレームを使用すると便利です。

dat <- data.frame(Zoo = "Omaha",
               Animals = 50, Bears = 10, `Polar Bears` = 3)

データを適切に整理するには、 reshape2 :: melt が必要です。

library(reshape2)
d3 <- melt(dat,id.var=1)

プロットを作成します(他の回答と同じです):

library(ggplot2)
ggplot(d3, aes(x = variable, y = value)) +
    geom_bar(width = 1, colour = "black",stat="identity") +
    coord_polar()

他のヒント

より良い答えを待っている間、私はあなたが言及した(次善の)ソリューションを投稿すべきだと考えました。 dat は質問に含まれる構造です。

d <- data.frame(animal=factor(sapply(list(dat[2:length(dat)]),
                function(x) rep(names(x),x))))
cxc <- ggplot(d, aes(x = animal)) +  geom_bar(width = 1, colour = "black") 
cxc + coord_polar() 

inverse.rle を使用してデータを再作成できます

dd = list(lengths = unlist(dat[-1]), values = names(dat)[-1])
class(dd) = "rle"
inverse.rle(dd)

複数の動物園(列)がある場合は、試すことができます

l = plyr::dlply(dat, "Zoo", function(z)  
      structure(list(lengths = unlist(z[-1]), values = names(z)[-1]), class = "rle"))

reshape2::melt(llply(l, inverse.rle))
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top