この単純なデータがあるとしましょう:
mydata <- data.frame(group=c("A", "B", "0", "AB"), FR=c(20, 32, 32, 16))
このデータフレームから円グラフを作成する場合、次のことができます。
with(mydata,pie(FR, labels=paste0(as.character(group), " ", FR, "%"), radius=1))
それは非常に簡単ですが、受け入れられます。
Ggplot2またはラティスで似たようなものを取得するにはどうすればよいですか?
多くの試行錯誤の後、私は持っています
ggplot(mydata, aes(x = factor(1), y=FR,fill=factor(group)) ) + geom_bar(width = 1,stat="identity")+coord_polar(theta = "y")
はるかに複雑でandいです。簡単なはずではないですか? ggplotの本は、いくつかの例を示しているだけで、円グラフの使用を推奨していません。
ラティスはさらに悪いです、あなたはそれを怖がらせるために多くの行が必要です。
素敵でシンプルな円グラフを手に入れるのを手伝ってくれませんか?たとえば、次のような...
20行のコードなしで簡単に実行できるRパッケージはありませんか?
ここにいくつかの便利なヒント:
ソース: ダークホース分析:パイの回収
(srsly tho、棒グラフの何が問題になっていますか?)
注:Dark Horse Analyticsが何をするのかわかりません。これは、私のお気に入りのアンチパイデモイメージです。
なぜsquare円グラフではないのですか?
devtools::install_github("hrbrmstr/waffle")
library(waffle)
mydata <- c(`A`=20, `B`=32, `0`=32, `AB`=16)
waffle(mydata, title = "Yummy waffle pie!")
情報の次元が複数ある場合、別のオプションは sunburstR です。 @rawr post からのbrowsers
データを使用すると、次のことができます。
library(sunburstR)
library(dplyr)
library(tidyr)
browsers %>%
unite(bv, browser, version, sep = "-") %>%
select(bv, share) %>%
sunburst(., count = TRUE)
treemap
を使用できます(インタラクティブバージョンの場合は、@ timelyportfolioのd3treeR
パッケージ )
library(treemap)
tm <- treemap(
browsers,
index=c("browser", "version"),
vSize="share",
vColor="share",
type="value"
)
サンキーダイアグラムを使用することもできます(networkD3
パッケージ )
library(networkD3)
df <- browsers %>%
mutate_each(funs(as.character), browser, version) %>%
mutate(bn = group_indices_(., .dots = "browser"),
cn = max(bn) + row_number())
links <- select(df, bn, cn, share)
nodes <- data.frame(name = c("", sort(unique(df$browser)), df$version))
sankeyNetwork(Links = links, Nodes = nodes, Source = "bn",
Target = "cn", Value = "share", NodeID = "name",
fontSize = 12, nodeWidth = 30)