如何在r中制作矩阵的颜色图

时间:2017-06-20 06:27:43

标签: r

The plot between e_values and r_values, the values of probabilities of fp0 indicated by different colors of my color scale.我有一个132行和3列的矩阵。这些名称是e_values,r_values和fp0。现在我如何绘制矩阵的颜色图?该图必须有e_values x轴上的y轴和r_值以及fp0的各种值作为颜色.e_values在0.1的间隔中从0到0.5变化,r_values在0到6.5之间变化,间隔为0.5到4然后0.2从4到6.5和我的fp0值基本上是我的概率,所以它们从0到1不等。我无法弄清楚上传我的csv文件的方式,所以我给了我的矩阵的描述,我也打印我的矩阵我对R也很陌生,对ggplot2和其他类似软件包的工作方式不太熟悉,所以如果我得到详细的解释,将会非常有用。

      e_values   r_values   fp0
    1   0          0         1.0000
    2   0.1        0         1.0000
    3   0.2        0         1.0000
    4   0.3        0         1.0000
    5   0.4        0         1.0000
    6   0.5        0         1.0000   
    7   0          0.5       1.0000  
    8   0.1        0.5       1.0000 
    9   0.2        0.5       1.0000
   10   0.3        0.5       1.0000
   11   0.4        0.5       1.0000
   12   0.5        0.5       1.0000
   13   0          1         1.0000

我的矩阵以上述方式继续,直到r = 4,之后随后的r值增加0.2并且fp0值也开始显示变化。 然后遵循这种模式直到没有。行变为132。

1 个答案:

答案 0 :(得分:1)

你只需要在你的ggplot中使用fp0作为颜色。

下面的代码将创建您描述的图表。在这里,较暗的颜色表示较高的概率。如果你有一个离散的概率,你也可以为每个级别使用不同的颜色(第二个图)。

require(ggplot2)

e_values = seq(0, 0.5, by = 0.1)
r_values = c(seq(0, 4, by = 0.5), seq(4.2, 6.5, by = 0.2))

df <- data.frame(e_values = sample(e_values, 132, replace = T),
                 r_values = sample(r_values, 132, replace = T),
                 fp0 = runif(132))

g <- ggplot(df, aes(x = r_values, y = e_values, color = fp0))
g <- g + geom_point()
g

df <- data.frame(e_values = sample(e_values, 132, replace = T),
                 r_values = sample(r_values, 132, replace = T),
                 fp0 = sample(seq(0, 1, by = 0.2), 132, replace = T))

g <- ggplot(df, aes(x = r_values, y = e_values, color = as.factor(fp0)))
g <- g + geom_point()
g

Continuos probabilities Discrete probabilities

编辑:您上传的图片的r_values为y轴,e_values为x轴。另外,点的形状是不同的。以下是生成所需图表的代码:

g <- ggplot(df, aes(x = e_values, y = r_values, color = fp0))
g <- g + geom_point(shape = 15, aes(fill = fp0))
g

enter image description here