R闪亮 - 修复动态地块的颜色/形状

时间:2018-04-24 09:43:33

标签: r ggplot2 shiny

我有一个应用程序,旨在绘制'预先计算的'存储在MYSQL数据库中的数据框。

数据框由四列组成 - id,基因型,A值和B值。该图是一个简单的A / B geom_point,请参见下面的示例代码。

我想根据' Genotype'手动定义点的形状和颜色。变量。

基因型的值始终是; " -1"," 0" ," 1"和" 2"。然而,在一些数据帧中,并非所有这些值都存在(例如仅1),但是我想保持图之间的形状/颜色相同。

有人有解决方案吗?

library( ggplot2 )

# Example values 
id       <- c( "s1" , "s2" , "s3" , "s4" )
genotype <- c( -1 , 0 , 1 , 2 )
A_value  <- c( 100 , 110 , 120 , 130 )
B_value  <- c( 130, 120 , 110 , 100 )

# data_frame 
df <- data.frame( id, genotype , A_value , B_value )

# Simple plot 
ggplot(df, aes( A_value , B_value )) +
  geom_point( aes(shape = factor( df$genotype ) , color = factor(df$genotype) ))

1 个答案:

答案 0 :(得分:1)

您可以指定基因型水平,然后在海底形状和颜色标度中使用drop = FALSE。请注意,您不应在df$genotype - aes的规范中使用geom_point,因为您指的是相同的数据帧。

ggplot(df, aes(A_value, B_value)) +
  geom_point(aes(shape = factor(genotype, levels = c(-1 , 0 , 1 , 2)),
                 color = factor(genotype, levels = c(-1 , 0 , 1 , 2)))) +
  scale_color_discrete(name = "genotype", drop = F) +
  scale_shape_discrete(name = "genotype", drop = F)

enter image description here

ggplot(df[1:3, ], aes(A_value, B_value)) +
  geom_point(aes(shape = factor(genotype, levels = c(-1 , 0 , 1 , 2)),
                 color = factor(genotype, levels = c(-1 , 0 , 1 , 2)))) +
  scale_color_discrete(name = "genotype", drop = F) +
  scale_shape_discrete(name = "genotype", drop = F)

enter image description here