最佳可视化方法

时间:2013-01-03 13:34:49

标签: r graphics data-visualization

我的数据看起来像这样:

     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的百分比)

3 个答案:

答案 0 :(得分:2)

另一种方法是使用dotplot - 您只能用一个点表示您的值。我会使用包lattice来代替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="")

enter image description here

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

enter image description here

答案 1 :(得分: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")

enter image description here

答案 2 :(得分:1)

您也可以使用ggplot2。它可以让你获得更多控制权,虽然我不确定这是否是你正在寻找的眼睛。我不确定你是否要求一种完全不同的可视化类型,或者你是否正在寻找更多控制来绘制条形图(这里适用于@Didzis所示)。对于第二种情况,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 bar plot example
当然,您可以更改此图的每个元素(请查看本文开头的链接)。