2013-06-06 15 views
27

私はggplot2の棒グラフとして単純なデータフレームを注文しプロットすることに挑戦してきました。データフレームに表示される降順でデータをプロット

対応するカテゴリ( '人間'、 '男性'など)の値( 'count'変数)が高い値から低い値にプロットされるように、データを表示する必要があります。私はこのサイトの他のスレッドに似た質問をしてきましたが、これを動作させることはできません!

## Dataset (mesh2) 

#Category     Count 

#Humans    62 

#Male    40 

#Female    38 

#Adult    37 

#Middle Aged   30 

#Liver/anatomy & histology   29 

#Organ Size     29 

#Adolescent     28 

#Child    21 

#Liver/radiography*    20 

#Liver Transplantation*  20 

#Tomography, X-Ray Computed   20 

#Body Weight   18 

#Child, Preschool    18 

#Living Donors*   18 

#Infant    16 

#Aged    14 

#Body Surface Area    14 

#Regression Analysis  11 

#Hepatectomy   10 

## read in data (mesh2) as object (mesh2) 

mesh2 <- read.csv("mesh2.csv", header = T) 

## order data by count of mesh variable 

mesh2$cat2 <- order(mesh2$Category, mesh2$Count, decreasing=TRUE) 

## Barplot created in ggplot2 

library(ggplot2) 

mesh2p <- ggplot(mesh2, aes(x=cat2, y=Count)) + geom_bar (stat="identity") +  scale_x_continuous(breaks=c(1:20), labels=c("Humans", "Male", "Female", "Adult", "MAged", "Liver anat & hist", "Organ Size", "Adolescent", "Child", "Liver radiog", "Liver Transplnt", "Tomog X-Ray Computed", "Body Weight", "Child Preschool", "Living Donors", "Infant", "Aged", "BSA", "Regression Analysis", "Hepatectomy"))+ theme (axis.text.x=element_text(angle=45, hjust=1)) 

私は十分な「評判」がないので、出力を投稿できないようですか?

+1

「カテゴリ」を順序付けされた要素にします。それを行う方法を知るには '?factor'を参照してください。 – Roland

+1

@Rolandいいえ、それは一般的にこれを行う方法ではありません。セット 'c("人間 "、"男性 "、"女性 "、"猫 ")の暗黙の順序は何ですか?順序付けられた因子は、レベル*自体がいくつかの量的情報、例えば 'c("湿った "、"湿った "、"乾燥した ")を伝えるデータのためのものです。なぜなら、順序付けられていないデータに対してR(多項式制約)のモデルで使用された場合、順序付きファクタとしてこれらのデータを格納することは間違ったことになります。必要なのは 'reorder()'関数です。 –

+1

/あなた/あなたは/指... –

答えて

97

あなたはreorder()が必要です。

enter image description here

を使用reorder(Category, Count)Categoryが低高から注文しました:ここでは、ダミーデータ与える

set.seed(42) 
df <- data.frame(Category = sample(LETTERS), Count = rpois(26, 6)) 

require("ggplot2") 

p1 <- ggplot(df, aes(x = Category, y = Count)) + 
     geom_bar(stat = "identity") 

p2 <- ggplot(df, aes(x = reorder(Category, -Count), y = Count)) + 
     geom_bar(stat = "identity") 

require("gridExtra") 
grid.arrange(arrangeGrob(p1, p2)) 

との一例です。

+1

こんにちはギャビン。ありがとうv.muchこれのために。私はちょうどログオンして、最後の1時間を費やして解決策を見つけようとしており、あなたが提示した解決策も思いつきました!それにもかかわらず、定量的な情報を伝えるかどうかについてのあなたの説明と、ファクターまたはリオーダ機能の適切な使用は本当に役に立ちます。再度、感謝します。 –

+0

この場合、カテゴリごとに複数の塗りつぶしがある場合、なぜこれが機能しないのか分かりません。 – JHo

+0

あなたのコードは負の値では動作しないと思います。http://dpaste.com/0Y5T182を参照してください。この場合、プロットはプロット後に降順ではありません。ここでコードはあまりにも 'dat.m < - 構造(リスト(日付= C(" 1.5.2017 "、" 1.3.2017 "、" 1.5.2017 "、" 1.3.2017 ")、変数=構造(c(1L、行番号.c =(NA、1L、2L、2L)、ラベル= c(「合計」、「面積」)、クラス=「係数」)、値= c(110、-90,700,880) 、-4L)、.Names = c( "Date"、 "variable"、 "value")、class = "data.frame");ライブラリ(ggplot2); gogplot(dat.m、aes(x = reorder(Date、 - value)、y = value、fill = variable))+ geom_bar(stat = 'identity') ' –

関連する問題