2017-10-17 11 views
0

この質問は以前のpostに関連しています。私は、y軸を設定するにはどうすればよいy軸をログスケールに変更するにはどうすればいいですか?

ggplot of test

> ggplot(test, aes(fill=a,y=c,x=b)) + 
    geom_bar(position="dodge",stat="identity") 

a b  c 
1 a x  NA 
2 b x 5.1e-03 
3 c x 2.0e-01 
4 d x 6.7e-05 
5 e x  NA 
6 f y 6.2e-05 
7 g y 1.0e-02 
8 h y 2.5e-03 
9 i y 9.8e-02 
10 j y 8.7e-04 

> dput(test) 
structure(list(a = structure(1:10, .Label = c("a", "b", "c", 
"d", "e", "f", "g", "h", "i", "j"), class = "factor"), b = structure(c(1L, 
1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L), .Label = c("x", "y"), class = "factor"), 
c = c(NA, 0.0051, 0.2, 6.7e-05, NA, 6.2e-05, 0.01, 0.0025, 
0.098, 0.00087)), .Names = c("a", "b", "c"), row.names = c(NA, 
-10L), class = "data.frame") 

は、このグラフを与えるggplotと定期的にそれをプロット:

は、私はこのデータのセット testを持っていると言いますログスケール(例えば、0,10,-6,1 -、 10 -4 ... 10 )バーの高さがデータを直接ログ変換せずに離れすぎないようにしますか?また、これを達成するには、NAの値がゼロとしてグラフに表示されるようにしますか?

また、scale_y_log10()機能を試しましたが、バーは上から下に向かっています。私はそのようにしたくないです。

enter image description here

ありがとうございます!

+0

'P + scale_y_log10()' – Suren

+0

あなたが再現可能な例を作成する方法にについてお読みくださいhttps://stackoverflow.com/questions/5963269/how-to-make-a-great-r- reproducible-example – Suren

+0

@DiscoSuperfly私はすでにそれを試しましたが、バーは上から下に向かっています。私はそれを回避する方法を知らない。 – Dodong

答えて

0

geom_barではなくgeom_segmentではなく、0からtest$cまでのバーを指定することができます。まだscale_y_log10()を使用しているため、警告が発行されます。

我々は、各test$aのでaes(x=a, xend=a)からセグメントを作成し、その代わりにtest$bxyを分離するfacet_wrapを使用する必要があります。私は0NAを置き換えるのファンではない

gg <- ggplot(test) + 
    geom_segment(aes(colour=a, y=0, yend=c, x=a, xend=a), size=10) + 
    scale_y_log10() + facet_wrap(~b, scales="free_x") + 
    ylab("log10 value") + xlab("") 
gg 

は、欠損値は0ではありません。むしろ、ラベルNAというだけです。

test$c_label <- test$c 
test$c_label[is.na(test$c)] <- "NA" 

gg + geom_label(data=subset(test, is.na(test$c)), aes(x=a, y=0.00001, label=c_label), size=5) 

これがかもしれませんが、作業を-周りに、私は@のDWWさんのコメントに同意完了 - 。「あなたがバープロットを対数目盛を使用してはならないログのベースは(0)プロットには不可能であるの選択。別の基本値は任意で、選択した値に応じてバーを似ているか違うかにすることができます。これは誤解を招くグラフの形です。ログスケール。

enter image description here

+0

それは動作します!どうもありがとうございます!私はちょうど1つのフォローアップの質問があります。どのようにしてaの順序を変更できますか? – Dodong

+0

'factor'' test $ a'を実行し、必要な順番で 'levels'を設定します。 – Djork

+0

ありがとう! – Dodong

関連する問題