ggplotコードでは、すべての行のセクションがdf
になっている単一の積み上げ棒グラフが作成されます。 coord_polar
では、これはデータフレーム内の各行にウェッジが付いた単一の円グラフになります。次にgg_animate
を使用すると、各フレームには特定のレベルのY
に対応するくさびだけが含まれます。だからこそ、あなたは毎回完全な円グラフのセクションしか得ていないのです。
Y
の各レベルのフルパイが必要な場合は、各レベルの個別の円グラフをY
に作成し、それらのパイをGIFに結合することをお勧めします。ここであなたの実際のデータに似ています(私は願って)いくつかの偽のデータを持つ例です:GIFで
library(animation)
# Fake data
set.seed(40)
df = data.frame(Year = rep(2010:2015, 3),
disease = rep(c("Cardiovascular","Neoplasms","Others"), each=6),
count=c(sapply(c(1,1.5,2), function(i) cumsum(c(1000*i, sample((-200*i):(200*i),5))))))
saveGIF({
for (i in unique(df$Year)) {
p = ggplot(df[df$Year==i,], aes(x="", y=count, fill=disease, frame=Year))+
geom_bar(width = 1, stat = "identity") +
facet_grid(~Year) +
coord_polar("y", start=0)
print(p)
}
}, movie.name="test1.gif")
パイは、上記すべて同じサイズです。私はアニメーションが、一瞬editorializeできる場合
library(dplyr)
df = df %>% group_by(Year) %>%
mutate(cp1 = c(0, head(cumsum(count), -1)),
cp2 = cumsum(count))
saveGIF({
for (i in unique(df$Year)) {
p = ggplot(df %>% filter(Year==i), aes(fill=disease)) +
geom_rect(aes(xmin=0, xmax=max(cp2), ymin=cp1, ymax=cp2)) +
facet_grid(~Year) +
coord_polar("y", start=0) +
scale_x_continuous(limits=c(0,max(df$cp2)))
print(p)
}
}, movie.name="test2.gif")
:しかし、あなたはまた、Year
(this SO answerから適応コード)の各レベルのcount
の合計に基づいパイの大きさを変更することができます(しかし、円グラフは無意味なので、多分円グラフをアニメーション化するだけで怪我をするだけです)、普通の古い静的なラインプロットでデータを理解しやすくなります。
ggplot(df, aes(x=Year, y=count, colour=disease)) +
geom_line() + geom_point() +
scale_y_continuous(limits=c(0, max(df$count)))
それとも、この:たとえば
ggplot(df, aes(x=Year, y=count, colour=disease)) +
geom_line() + geom_point(show.legend=FALSE) +
geom_line(data=df %>% group_by(Year) %>% mutate(count=sum(count)),
aes(x=Year, y=count, colour="All"), lwd=1) +
scale_y_continuous(limits=c(0, df %>% group_by(Year) %>%
summarise(count=sum(count)) %>% max(.$count))) +
scale_colour_manual(values=c("black", hcl(seq(15,275,length=4)[1:3],100,65)))
あなたは私の全体のコードを再現することができます。私は 'mtcars'を使ってデータを作成しました。 –
私の英語は良くないかもしれませんが、私の質問では、最初のプロットの解決策を求めています。 2つ目は、1つのレベルでどのように動作するかを示すことです...自分の仕事に何が問題なのか分かりません。あなたは、このグラフとデータを使って自分が何をしているのか、それらがどのように形作られるのか分かりません。しかし、当然、あなたは永遠に食べることを知っています –
申し訳ありません@エスベルト私は実際にそれを最初に理解していませんでした - 私の英語は完璧でもないのでかもしれません。私はすべてを知っているふりをしていません、私はあなたを助けてくれる人を増やすように導くだけです。あなたの質問を選んだとき、私はあなたには1年しか表示しない2番目のプロットに問題があると思っていました。いい、私はそのsecondeのものを再現できなかったので、私は最初のコメントを残しました。それがあなたに無礼に聞こえるかどうか心からお詫び申し上げます。 – HubertL