2016-07-25 1 views
0

次のプロットがある場合、プロットする前にデータの再シャッフルを禁止するにはどうすればよいですか?私はプロットしようとしているデータフレームと同じように、プロット内のデータの順序を維持したいと思います。コメントで述べたようにすべてのヘルプは非常にプロットする前にdata.frameのシャッフルを禁止する

df <- data.frame(derma=c(1:14), prevalence=c(1:14)) 

df$derma = c("Spotted melanosis","Diffuse melanosis on palm","Spotted melanosis on trunk","Diffuse melanosis on trunk","Leuco melanosis","Whole body melanosis","Spotted keratosis on palm","Diffuse keratosis on palm","Spotted keratosis on sole","Diffuse keratosis on sole","Dorsal keratosis","Chronic bronchitis","Liver enlargement","Carcinoma") 
df$prevalence = c(16.2,78.6,57.3,20.6,17,8.4,35.4,23.5,66,52.8,39,6,2.4,1) 

g <- ggplot(data=df, aes(x=derma, y=prevalence)) + geom_bar(stat="identity") + coord_flip() 

print(g) 

enter image description here

+0

ファクタについて読む。参照してください - http://stackoverflow.com/questions/5208679 – zx8754

答えて

0

を高く評価している、あなたは、因子変数を注文することによってこれを行うことができます。以下のサンプルコードです:

df <- data.frame(derma=c(1:14), prevalence=c(1:14)) 

df$derma = c("Spotted melanosis","Diffuse melanosis on palm","Spotted melanosis on trunk","Diffuse melanosis on trunk","Leuco melanosis","Whole body melanosis","Spotted keratosis on palm","Diffuse keratosis on palm","Spotted keratosis on sole","Diffuse keratosis on sole","Dorsal keratosis","Chronic bronchitis","Liver enlargement","Carcinoma") 
df$prevalence = c(16.2,78.6,57.3,20.6,17,8.4,35.4,23.5,66,52.8,39,6,2.4,1) 
df$derma <- factor(df$derma, levels = df$derma, ordered=TRUE) 

g <- ggplot(data=df, aes(x=derma, y=prevalence)) + geom_bar(stat="identity") + coord_flip() 

print(g) 

あなたがラベルで遊んで、それにあなたのプロットにしたいという順序を与えることができます。たとえば、単にrev()関数を使用してプロット内の要素を反転することができます。以下は同じコードです:

df <- data.frame(derma=c(1:14), prevalence=c(1:14)) 

df$derma = c("Spotted melanosis","Diffuse melanosis on palm","Spotted melanosis on trunk","Diffuse melanosis on trunk","Leuco melanosis","Whole body melanosis","Spotted keratosis on palm","Diffuse keratosis on palm","Spotted keratosis on sole","Diffuse keratosis on sole","Dorsal keratosis","Chronic bronchitis","Liver enlargement","Carcinoma") 
df$prevalence = c(16.2,78.6,57.3,20.6,17,8.4,35.4,23.5,66,52.8,39,6,2.4,1) 
df$derma <- factor(df$derma, levels = rev(df$derma), ordered=TRUE) 

g <- ggplot(data=df, aes(x=derma, y=prevalence)) + geom_bar(stat="identity") + coord_flip() 

print(g) 
+0

こんにちは@クマール、あなたの応答のために多くのありがとう!しかし、実際には、注文はちょうど私が**ほしいものではないものです。データをdata.frameと同じ順序で表示したいだけです。また、注文機能を使用すると、ラベルだけが変更されますが、バーのデータは変更されません。 今のところ、df $ dermaの順番は正しいと思いますが、何とかdf $流行のデータが順番に変更されていますが、同じ順序で残しておきたいと思います。 – Jonas

+0

申し訳ありませんが、コードを少し編集しました。レベルの代わりにラベル引数を使用しました。これでデータの順序は変わらないでしょう。 私は要因を注文せずに解決策を知りません。因子変数を順序付けすると、実際にデータを順序付けるのではなく、各レベルの順序を指定するだけです。したがって、出力には、因子の順序で順序付けられたプロットが表示されます。 –

+0

これはまさに私が探していたものです!あなたの貢献に非常に感謝します:) – Jonas

関連する問題