我有一个包含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可以是交叉标记,也可以忽略。
提前致谢!
答案 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))
您可以使用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"
)
而且,如果您想自定义颜色,只需添加colors = <Insert your color range here>
作为额外参数即可。这个热图也是互动的。