2

私はデータフレームを持っています:

x <- data.frame(id=letters[1:3],val0=1:3,val1=4:6,val2=7:9)
  id val0 val1 val2
1  a    1    4    7
2  b    2    5    8
3  c    3    6    9

各列のパーセンテージを示す積み上げ棒グラフをプロットしたいと考えています。したがって、各バーは 1 つの行を表し、各バーは長さがありますが、それぞれの色が val0、val1、および val2 のパーセンテージを表す 3 つの異なる色になっています。

探してみましたが、積み上げグラフをプロットする方法しか得られませんが、積み上げ比例グラフは得られません。

ありがとう。

4

1 に答える 1

5

ggplot2 の使用

ggplot2と_geom_bar

  1. 長形式で作業する
  2. パーセンテージを事前に計算する

例えば

library(reshape2)
library(plyr)
# long format with column of proportions within each id
xlong <- ddply(melt(x, id.vars = 'id'), .(id), mutate, prop = value / sum(value))

ggplot(xlong, aes(x = id, y = prop, fill = variable)) + geom_bar(stat = 'identity')

ここに画像の説明を入力

 # note position = 'fill' would work with the value column
 ggplot(xlong, aes(x = id, y = value, fill = variable)) +
       geom_bar(stat = 'identity', position = 'fill', aes(fill = variable))

# 上記と同じプロットを返します

ベース R

テーブル オブジェクトは、モザイク プロットとしてプロットできます。を使用してplot。あなたxは(ほとんど)テーブルオブジェクトです

# get the numeric columns as a matrix
xt <- as.matrix(x[,2:4])
# set the rownames to be the first column of x
rownames(xt) <- x[[1]]
# set the class to be a table so plot will call plot.table
class(xt) <- 'table'
plot(xt)

ここに画像の説明を入力

mosaicplot直接使用することもできます

mosaicplot(x[,2:4], main = 'Proportions')
于 2013-04-17T04:31:07.370 に答える