2016-12-02 15 views
0

昨日私は古いグラフを作成し、geom_bar - barとpie chartのソートが変更されたことに驚きました。geom_bar(?)の並べ替えでのg-ggplot2の変更

それほど長い前、私は、私は例を提示し、それの冒頭では、この質問

R - Strange pie chart behavior in ggplot

を掲載 - 同じショートコードは、現在別のグラフを生成します。 私は何かを誤解しましたか?これは私にとってはむしろ驚くべきことです。

ありがとうございます。

コード:

library(ggplot2) 
library(data.table) 

c1 <- c(2,3) 
c2 <- c("second","third") 
c2 <- factor(c2, levels = c("first","second","third","fourth")) 
c3 <- c(0.7,0.3) 
cs <- data.frame(c1,c2,c3) 
ct <- data.table(cs) 
colx <- c("blue","red") 
midpoint <- cumsum(ct$c3) - ct$c3/2 

ct 

keycols = c("c1") 
setkeyv(ct,keycols) 


vysg <- ggplot(ct, aes(x=1,y=c3,fill=c2)) + 
      geom_bar(stat="identity",width=2) + 
      coord_polar(theta='y')+ 
      theme(axis.ticks=element_blank(), axis.title=element_blank(), 
      axis.text.y = element_blank(), panel.grid = element_blank(), 
      axis.text.x = element_text(color=colx,size=15,hjust=0))+ 
     scale_y_continuous(breaks = midpoint, labels = ct$c2) + 
     scale_fill_manual(values=colx) + 
     scale_x_continuous(limits=c(-1,2.5)) 
vysg 

オリジナルチャート(全く同じコードによって生成されるが、このように見えた)のに対し、これは

enter image description here

このチャート

enter image description here

を生成します

Ih気づいたend of orderステートメントがありますが、この例には影響しません。

ご意見ありがとうございました。私は何かを目立たせるかもしれません。

+1

コードを実行して2番目の数字を取得しました。 –

+0

私はggplot 2.2.0とR 3.3.2を最初に取得します。 – Axeman

+0

古いバージョンの別のPCで試してみました。私のPC上のRが最初のものを生成するのに対して、それは2番目のグラフを生成します。 – Martin

答えて

0

私はAxemanのメッセージに従ってGithubに尋ねました。

理由は、スタッキングバーチャートの順序の変更です。

http://ggplot2.tidyverse.org/articles/releases/ggplot2-2.2.0.html

早く、このような状況に対処する必要があるのと同じ結果を維持します。このリンクにはいくつかの可能性があります。 私の状況では、私はcoord_polarに方向を変えていると、スクリプト全体の中点

breaks = 1-midpoint #instead of: midpoint 
coord_polar(theta='y', direction=-1) #instead of: coord_polar(theta='y') 

を変換:

library(ggplot2) 
library(data.table) 

c1 <- c(2,3) 
c2 <- c("second","third") 
c2 <- factor(c2, levels = c("first","second","third","fourth")) 
c3 <- c(0.7,0.3) 
cs <- data.frame(c1,c2,c3) 
ct <- data.table(cs) 
colx <- c("blue","red") 
midpoint <- cumsum(ct$c3) - ct$c3/2 

ct 

keycols = c("c1") 
setkeyv(ct,keycols) 


vysg <- ggplot(ct, aes(x=1,y=c3,fill=c2)) + 
      geom_bar(stat="identity",width=2) + 
      coord_polar(theta='y', direction=-1)+ 
      theme(axis.ticks=element_blank(), axis.title=element_blank(), 
      axis.text.y = element_blank(), panel.grid = element_blank(), 
      axis.text.x = element_text(color=colx,size=15,hjust=0))+ 
     scale_y_continuous(breaks = 1-midpoint, labels = ct$c2) + 
     scale_fill_manual(values=colx) + 
     scale_x_continuous(limits=c(-1,2.5)) 
vysg 

は今ggplotの元のスクリプトとしてggplot 2.2.0で同じ結果を提供します1.0.1

enter image description here

関連する問題