带有R的小饼图的散点图

时间:2018-10-21 21:28:12

标签: r ggplot2

我在下面将这些数据称为test1.melted。我也有使用软件包scatterpie绘制数据的代码,但是由于固有的散点问题(如果坐标不是笛卡尔坐标,即相等的水平和垂直距离),您将无法获得格式正确的图表。有没有一种更好的方法可以在不使用scatterpie的情况下绘制此数据?

数据:

test1.melted<-structure(list(Wet_lab_dilution_A = structure(c(1L, 2L, 3L, 4L, 
5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 
8L, 9L, 10L, 11L, 12L), .Label = c("A", "B", "C", "D", "E", "F", 
"G", "H", "I", "J", "K", "L"), class = "factor"), TypeA = structure(c(1L, 
1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 
1L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("I", "II"), class = "factor"), 
    NA12878 = c(100L, 50L, 25L, 20L, 10L, 0L, 100L, 50L, 25L, 
    20L, 10L, 0L, 100L, 50L, 25L, 20L, 10L, 0L, 100L, 50L, 25L, 
    20L, 10L, 0L), NA12877 = c(0L, 50L, 75L, 80L, 90L, 100L, 
    0L, 50L, 75L, 80L, 90L, 100L, 0L, 50L, 75L, 80L, 90L, 100L, 
    0L, 50L, 75L, 80L, 90L, 100L), IBD = c(1.02, 0.619, 0.294, 
    0.244, 0.134, 0.003, 0.003, 0.697, 0.964, 0.978, 1, 1, 1.02, 
    0.619, 0.294, 0.244, 0.134, 0.003, 0.003, 0.697, 0.964, 0.978, 
    1, 1), variableA = c("tEst", "tEst", "tEst", "tEst", "tEst", 
    "tEst", "tEst", "tEst", "tEst", "tEst", "tEst", "tEst", "pair", 
    "pair", "pair", "pair", "pair", "pair", "pair", "pair", "pair", 
    "pair", "pair", "pair"), valueA = c(0.1, 59.8, 84.6, 89.2, 
    97.4, 100, 99.6, 56.4, 29.9, 24, 12.1, 0.1, 0.1, 51.08, 75.28, 
    80.09, 90.16, 100, 100, 48.09, 23.97, 18.81, 9.24, 0.08)), row.names = c(NA, 
-24L), .Names = c("Wet_lab_dilution_A", "TypeA", "NA12878", "NA12877", 
"IBD", "variableA", "valueA"), class = "data.frame")

代码:

p<- ggplot() + geom_scatterpie(aes(x=valueA, y=IBD, group=TypeA), data=test1.melted,
                           cols=c("NA12878", "NA12877")) + coord_equal()+
          facet_grid(TypeA~variableA)
p

2 个答案:

答案 0 :(得分:-1)

您必须使用饼图吗? (而且您可能会这样做;它们没有任何问题。)

因为这样可以从字面上说明数据集中的每个变量:

library(ggplot2)

test1.melted$NA12877 <- as.factor(test1.melted$NA12877)
test1.melted$NA12878 <- as.factor(test1.melted$NA12878)

p <- ggplot(data = test1.melted, aes(x=valueA, y=IBD, group=TypeA))
p <- p + geom_point(aes(colour=NA12877, fill = NA12878), stroke=3, size = 3, shape = 21)
p <- p + geom_text(aes(label = Wet_lab_dilution_A), size = 2)
p + facet_grid(TypeA ~ variableA) + theme_minimal()

enter image description here

答案 1 :(得分:-1)

这是使用发散颜色编码的替代方法,但在这种情况下,散点图可能会更好:

p <-
  ggplot(test1.melted,
         aes(x= valueA, y = IBD, group = TypeA, fill = NA12878)) + 
  scale_fill_gradient2(midpoint = 50) +
  geom_point(size = 3, shape = 21) + 
  theme_minimal() +
  labs(color = "NA12878\nshare") +
  facet_grid(TypeA ~ variableA)
p

enter image description here