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