3

私は、最初に、男性または女性の性別に基づいて2つのグループを区別し、次に統計の後に、サンプル/個人ごとに、有意かどうかにかかわらずP値がある単純な棒グラフを作成しようとしています。男性と女性の間のバーを色分けする方法は知っていますが、Rで、P値が0.05未満の各サンプル/個人の上に星を自動的に配置したいと思います。

現在、単純なbarplot(x)関数を使用しています。

私は答えを探し回ろうとしましたが、これについてはまだ何も見つかりませんでした。

以下は私のサンプルデータセットへのリンクです:

[url = http://www.divshare.com/download/22797284-187]DivShareファイル-test.csv[/ url]

y軸に時間を置き、男性と女性を区別するためにバーを色分けしてから、いずれかのグループの重要度が1である個人の場合は、対応するバーの上に星を付けます。

事前にご提案ありがとうございます。

4

1 に答える 1

5

私はあなたのデータを少し混乱させて、それをより親しみやすくしました:

## dput(read.csv("barcharttest.csv"))
x <- structure(list(ID = 1:7,
  sex = structure(c(1L, 1L, 1L, 2L, 2L, 1L, 2L), .Label = c("female", "male"),
   class = "factor"),
  val = c(309L, 192L, 384L, 27L, 28L, 245L, 183L),
  stat = structure(c(1L, 2L, 2L, 1L, 2L, 1L, 1L), .Label = c("NS", "sig"),
    class = "factor")),
               .Names = c("ID", "sex", "val", "stat"),
               class = "data.frame", row.names = c(NA, -7L))

これは次のようになります:

  ID    sex val stat
1  1 female 309   NS
2  2 female 192  sig
3  3 female 384  sig
4  4   male  27   NS
5  5   male  28  sig
6  6 female 245   NS
7  7   male 183   NS

今プロット:

sexcols <- c("pink","blue")
## png("barplot.png")  ## for output graph
par(las=1,bty="l")  ## I prefer these settings; see ?par
b <- with(x,barplot(val,col=sexcols[sex])) ## b saves x coords of bars
legend("topright",levels(x$sex),fill=sexcols,bty="n")
## use xpd=NA to make sure that star on tallest bar doesn't get clipped;
##   pos=3 puts the text above the (x,y) location specified
text(b,x$val,ifelse(x$stat=="sig","*",""),pos=3,cex=2,xpd=NA)
axis(side=1,at=b,label=x$ID)
## dev.off()

また、関連する軸に「時間」と「ID」のラベルを追加する必要があります。

ここに画像の説明を入力してください

于 2013-01-05T22:34:39.180 に答える