绘制包含所有行名称和列名称的图形

时间:2017-01-17 21:58:36

标签: r plot

我有一个包含5个列名和10个行名的数据框。此数据框中的值由-1到1之间的数字和NA组成。

                Comp.1 Comp.2 Comp.3 Comp.4    Comp.5
Param1              NA     NA     NA     NA        NA
Param2              NA     NA     NA     NA 0.9035769
Param3       0.9810636     NA     NA     NA        NA
Param4              NA     NA     NA     NA        NA
Param5              NA     NA     NA     NA        NA
...
Param10              NA     NA     NA     NA        NA

我想绘制一个图表,其中所有行都包含Y轴的行名称和列名称在X轴的列。此外,值表示某种颜色的点,并且该颜色的阴影确定值更接近1或-1。 NA可以是交叉标记,也可以忽略。

提前致谢!

2 个答案:

答案 0 :(得分:2)

我想我并不完全确定你在寻找什么,但我想有一种方法可以做到:

library(reshape2)
df$row.names<-rownames(df)
long.df<-melt(df,id=c("row.names"))
plotted<-ggplot(long.df,aes(x=row.names,y=variable,color=value))+geom_point()

注意::如果你有多个行和组合的组合列值然后这将导致过度绘图。这可以由geom_jitter()facet_wrap() / facet_grid()

处理

注2 ::如果你想要更多的热图输出,每个杨莉的回答&amp;不要在geom_tiles()

的位置使用geom_raster()geom_point()重叠数据

答案 1 :(得分:1)

如果我理解你,你基本上想要一个热图。在这种情况下,您的问题可能是duplicate,但我会根据您的具体数据框向您展示一些做热图的方法。

假设这是您的数据,为简单起见,我会减少行数和列数:

df <- data.frame(Comp.1 = c(0.3, -0.2, -1, NA, 1),
             Comp.2 = c(-0.4, -0.1, NA, 0, 0.6),
             Comp.3 = c(0.2, NA, -0.4, 0.3, NA))
row.names(df) <- c("Param1", "Param2", "Param3", "Param4", "Param5")

基础R

首先,转换为矩阵:

df_matrix <- data.matrix(df)

接下来,您可以使用heatmap()功能,如下所示:

heatmap(df_matrix, Rowv=NA, Colv=NA, col = cm.colors(256), scale="column", margins=c(5,10))

heatmap1

您可以使用col参数更改使用的颜色。还有其他内置的调色板,例如rainbow()heat.colors()topo.colors(),但它看起来仍然不会很好,所以你应该尝试其他包,例如......

Plotly package

安装plotly包,然后使用以下代码:

library(plotly)

plot_ly(
    x = names(df), y = row.names(df),
    z = df_matrix, type = "heatmap"
)

heatmap2

而且,如果您想自定义颜色,只需添加colors = <Insert your color range here>作为额外参数即可。这个热图也是互动的。