0

私はこのようなデータを持っています:

     chr01 chr02 chr03 chr04 chr05 chr06 chr07 chr08 chr09
T10     2     5     3     5     4     1     9     2     3
T11     0     2     1     5     2     1     3     5     4
T65     0     5     1     3     4     1     5     3     1

一部の列の列には0が付いています。各列のゼロの数を視覚化したい(各列の含有率が0のパーセンテージとして表示される場合があります)。私はRユーザーです。最初は円グラフを使用することを考えましたが、それを表現するための洗練された方法があるのではないかと思いました。ヒートマップも試してみました。これを表す他の方法はありますか?(一番下の行は、列ごとの0のパーセンテージを表したいです)

4

3 に答える 3

2

もう1つの方法はdotplot、値を1つのドットで表すだけの使用方法です。これを行うには、ggplot2の代わりにパッケージラティスを使用しますが、念のため、以下に両方のソリューションを追加しました。

#load df data from @Arun answer, and then...
library(reshape2)#for melt function
dd <- apply(df,2,function(x) mean(x==0)*100)
d1 <- melt(dd)#gets data to long format
d <- data.frame(variable=rownames(d1), d1) 
#lattice dotplot
library(lattice)
dotplot(reorder(variable, value) ~ value, d, col=1, aspect=1, 
        xlab="percentage", ylab="")

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

#ggplot2 dotplot 
library(ggplot2)
ggplot(d, aes(x = value, y = reorder(variable, value))) + 
  labs(x = "percentage", y = "") +
  geom_point() + 
  theme_bw()

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

于 2013-01-26T18:23:07.093 に答える
1

結果を表す簡単な方法は、棒グラフを作成することです。dfデータフレームの名前が次のようになっていると仮定します。

#Calculate percentage of 0 for each column
pr.0<-apply(df,2,function(x) mean(x==0)*100)
#Plot results
barplot(pr.0,ylab="Percentage")

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

于 2013-01-03T13:44:24.447 に答える
1

ggplot2を使用することもできます。それがあなたが探している目の保養であるかどうかはわかりませんが、それはあなたにもっとコントロールを与えます。@Didzisまったく異なるタイプの視覚化を求めているのか、それともより詳細な制御で棒グラフ(ここに示されているように適切)をプロットすることを求めているのかはわかりません。2番目のケースでは、次の場合にggplot2役立ちます。

require(ggplot2)
df <- structure(list(chr01 = c(2L, 0L, 0L), chr02 = c(5L, 0L, 5L), 
         chr03 = c(3L, 1L, 0L), chr04 = c(0L, 5L, 0L), chr05 = c(0L, 
         2L, 4L), chr06 = c(0L, 0L, 0L), chr07 = c(9L, 3L, 0L), chr08 = c(2L, 
         0L, 3L), chr09 = c(3L, 4L, 1L)), .Names = c("chr01", "chr02", 
         "chr03", "chr04", "chr05", "chr06", "chr07", "chr08", "chr09"
         ), class = "data.frame", row.names = c("T10", "T11", "T65"))
gg.df <- data.frame(chr.id = names(df))
gg.df$cnt <- sapply(df, function(x) sum(x==0)/length(x) * 100)

qplot(factor(chr.id), weight=cnt, data=gg.df, geom="bar", fill=factor(chr.id))

これにより、次のことが可能になりますggplot2棒グラフの例
もちろん、このプロットのすべての要素を変更できます(この投稿の冒頭にあるリンクを確認してください)。

于 2013-01-03T14:20:24.530 に答える