R 用网格绘制

R 用网格绘制,r,graph,plot,data.table,R,Graph,Plot,Data.table,我正在寻找一种基本上是网格的绘图类型。例如,将有10列和50行。例如,类似这样的内容: 每个框(在本例中,10*50=500)将有一个唯一的值,我将通过数据帧提供该值。基于唯一的值,我将有一个函数为每个框指定一种颜色。因此,它变成了一个网格来可视化每个框的“范围”。我还需要标记每个列(可能是垂直的,以便所有标签都适合)和行(水平的) 我只是不知道那将是什么样的情节,我也不知道是否有图书馆会这样做。我只是想找些能帮我的人。如果可能的话,我非常感谢您的帮助。热图怎么样 m=matrix(runif

我正在寻找一种基本上是网格的绘图类型。例如,将有10列和50行。例如,类似这样的内容:

每个框(在本例中,10*50=500)将有一个唯一的值,我将通过数据帧提供该值。基于唯一的值,我将有一个函数为每个框指定一种颜色。因此,它变成了一个网格来可视化每个框的“范围”。我还需要标记每个列(可能是垂直的,以便所有标签都适合)和行(水平的)


我只是不知道那将是什么样的情节,我也不知道是否有图书馆会这样做。我只是想找些能帮我的人。如果可能的话,我非常感谢您的帮助。

热图怎么样

m=matrix(runif(12),3,4)
rownames(m)=c("Me","You","Him")
colnames(m)=c("We","Us","Them","I")
heatmap(m,NA,NA)

请注意,它适用于
矩阵
而不是
数据框
,因为所有值都必须是数字,
数据框
是面向行的记录


有关其他选项,请参阅帮助。

假设您有一个数据框,其中网格的每个单元格都有“x”和“y”坐标,每个单元格都有一个变量“z”,并且您在R中加载了这个数据框,称为“intlgrid”:

head(intlgrid)

使用ggplot2软件包,您可以轻松打印光栅。因此:

install.packages(“ggplot2”)

一旦安装了ggplot2,您只需调用它

库(ggplot2)

现在代码是:

ggplot(intlgrid,aes(x,y,fill=z))+geom_光栅()+coord_equal()


然后绘制网格。

查看图形包中的
图像
功能,如果需要更多控制,请查看
光栅图像
功能


您也可以使用
rect
功能从头开始构建绘图。

我将转到
ggplot2
,因为它允许高度的灵活性。尤其是
geom_tile
非常有用。如果您确实需要面板行,您可以注释掉
主题(panel.grid.major=element_blank())+
主题(panel.grid.minor=element_blank())+
行,当然您也可以指定颜色。每个单元格中的文本是可选的;如果不需要,请注释掉
geom_文本
呼叫。请注意,您可以通过调整绘图窗口的大小来控制绘图(行和列)的大小,或者-如果希望使用
png()
-通过指定
宽度和
高度参数来输出到文件

library(ggplot2)
library(reshape)
library(scales)

set.seed(1234)
num.els <- 5
mydf <- data.frame(category1 = rep(LETTERS[1:num.els], 1, each = num.els),
                   category2 = rep(1:num.els, num.els),
                   value = runif(num.els^2, 0, 100))

p <- ggplot(mydf, aes(x = category1,
                      y = category2,
                      fill = value)) +
    geom_tile() +
    geom_text(label = round(mydf$value, 2), size = 4, colour = "black") +
    scale_fill_gradient2(low = "blue", high = "red",
                         limits = c(min(mydf$value), max(mydf$value)),
                         midpoint = median(mydf$value)) +
    scale_x_discrete(expand = c(0,0)) +
    scale_y_reverse() +
    theme(panel.grid.minor = element_blank()) +
    theme(panel.grid.major = element_blank()) +
    theme(axis.ticks = element_blank()) +
    theme(panel.background = element_rect(fill = "transparent"))+
    theme(legend.position = "none") +
    theme()

print(p)
库(ggplot2)
图书馆(重塑)
图书馆(比例尺)
种子集(1234)

num.els
ggplot2
也有
geom_tile
,这是用于这类事情的。这太棒了。是否可以返回热图中所有颜色的数据框或矩阵?我必须将一些网格的颜色与另一个散点图相关联。相反,有没有办法为热图输入我自己的颜色?所有的数字将从0到100,我可以有一个窗口,每个10。所以,0到10是一种颜色,10+到20是另一种颜色,以此类推直到100。我很确定热图的帮助描述了如何控制调色板。你试过了吗?我在用热图。2,它和热图相似。热图.2有我在范围内使用的颜色和中断。谢谢你的帮助。
library(ggplot2)
library(reshape)
library(scales)

set.seed(1234)
num.els <- 5
mydf <- data.frame(category1 = rep(LETTERS[1:num.els], 1, each = num.els),
                   category2 = rep(1:num.els, num.els),
                   value = runif(num.els^2, 0, 100))

p <- ggplot(mydf, aes(x = category1,
                      y = category2,
                      fill = value)) +
    geom_tile() +
    geom_text(label = round(mydf$value, 2), size = 4, colour = "black") +
    scale_fill_gradient2(low = "blue", high = "red",
                         limits = c(min(mydf$value), max(mydf$value)),
                         midpoint = median(mydf$value)) +
    scale_x_discrete(expand = c(0,0)) +
    scale_y_reverse() +
    theme(panel.grid.minor = element_blank()) +
    theme(panel.grid.major = element_blank()) +
    theme(axis.ticks = element_blank()) +
    theme(panel.background = element_rect(fill = "transparent"))+
    theme(legend.position = "none") +
    theme()

print(p)