4

私は R を初めて使用します。基本的な R プロット関数 (R ベース) を使用して、積み上げられた個々のバー内に絶対値を一貫した方法で追加する方法を他の人に説明してもらいたいと思います。Rベースを使用して積み上げ棒グラフをプロットしようとしましたが、値が矛盾した/非論理的な方法で表示され、村ごとに100%になるはずですが、合計が100%になりません。取り組んでいるデータは次のとおりです。

Village      100         200       300  400      500

Male    68.33333    53.33333        70   70 61.66667

Female  31.66667    46.66667        30   30 38.33333

要約すると、5 つの村があり、世帯主が性別ごとにインタビューされていることを示すデータです。

グラフをプロットするために次のコマンドを使用しました。

barplot(mydata,col=c("yellow","green")
x<-barplot(mydata,col=c("yellow","green")
text(x,mydata,labels=mydata,pos=3,offset=.5)

各バーに正しい値を割り当てるのを手伝ってくださいありがとう

4

1 に答える 1

13

これはコメントとして始まりましたが、答えにならないのは不公平に思えました。あなたの質問に (スタック オーバーフローであっても) 適切に答えるには、「mydata」がどのように構成されているかを知る必要があります。最初は、5 行と 2 列または 3 列のデータ フレームであると想定していましたが、この場合、コードは意味がありません。ただし、これここでの構造である場合、私が望むことを行う1つの方法は次のとおりです。

mydata <- data.frame(
    row.names =c(100, 200, 300, 400, 500),
    Male =c(68.33333, 53.33333, 70, 70, 61.66667),
    Female =c(31.66667, 46.66667, 30, 30, 38.33333))

x <- barplot(t(as.matrix(mydata)), col=c("yellow", "green"), 
    legend=TRUE, border=NA, xlim=c(0,8), args.legend=
        list(bty="n", border=NA), 
    ylab="Cumulative percentage", xlab="Village number")
text(x, mydata$Male-10, labels=round(mydata$Male), col="black")
text(x, mydata$Male+10, labels=100-round(mydata$Male))

これにより、次が生成されます。

ここに画像の説明を入力

別の方法として、y の値をすべての男性のテキスト ラベルに対して 40 に設定し、すべての女性のテキスト ラベルに対して 80 に設定することもできます。これには、ラベルの混乱が少なくなるという利点と、テキストの垂直位置が概念的に定まらないという欠点があります。データに添付されています。

個人的には、この棒グラフはあまり好きではありませんが、単純な棒グラフよりもデータの視覚化に対してははるかに悪い犯罪がたくさんあります。プロット上の数字はごちゃごちゃしていて、実際のデータの色、形、サイズへのマッピングの視覚的な影響を損なっています。私はむしろ次のような単純なドットプロットをしたい:

library(ggplot2)
ggplot(mydata, aes(x=row.names(mydata), y=Male)) +
  geom_point(size=4) +
  coord_flip() +
  labs(x="Village number\n", y="Percentage male") +
  ylim(0,100) +
  geom_hline(yintercept=50, linetype=2)

を与える

ここに画像の説明を入力

プロットの冗長な混乱が少なくなり、データとインクの比率が高くなります。ただし、最終的には、視聴者にとって意味のあるプロットを作成する必要があります。

于 2013-02-18T08:39:28.853 に答える