Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 使用所有行名称和列名绘制图形_R_Plot - Fatal编程技术网

R 使用所有行名称和列名绘制图形

R 使用所有行名称和列名绘制图形,r,plot,R,Plot,我有一个数据框,有5个列名和10个行名。此数据帧中的值由-1到1和NAs之间的数字组成 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

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

                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。NAs可以是交叉标记,也可以忽略


提前谢谢

我想我不完全确定你在找什么,但我想一种方法是:

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()
library(重塑2)

df$row.names如果我理解正确,您基本上想要一张热图。在这种情况下,您的问题可能是a,但我将向您展示一些基于您拥有的特定数据帧制作热图的方法

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

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")

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

精心包装

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

library(plotly)

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


而且,如果您想自定义颜色,只需添加一个
colors=
作为额外参数。此热图也是交互式的。

非常感谢!这对我有用。将代码修改为这样,因为我有很多NAs
df1$row.names另一个问题,我有许多这样的数据帧(相同的列,但行数可能不同),因此,将生成许多这样的图。我应该如何将它们组合成一个绘图?您应该能够将数据集
rbind()
组合在一起。如果列是相同的,那么长度是多少并不重要。同样,如果这个答案对你有效,你能接受吗?
heatmap(df_matrix, Rowv=NA, Colv=NA, col = cm.colors(256), scale="column", margins=c(5,10))
library(plotly)

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