Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.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 如何包括世界其他地区及;image()中的列名称_R_Image - Fatal编程技术网

R 如何包括世界其他地区及;image()中的列名称

R 如何包括世界其他地区及;image()中的列名称,r,image,R,Image,我想知道如何在image()绘图(base R)中包含行和列名。我尝试将这些行和列名称分配给我正在绘制的矩阵(这通常适用于barplot()),但没有起作用。我有预感它与par()或xaxs/yaxs参数有关 例如: # fixes 90-degree rotation image.real = function(mat) image(t(mat)[,nrow(mat):1]) A = matrix(runif(4),2,2) colnames(A) = 1:2 rownames(A) = 1

我想知道如何在image()绘图(base R)中包含行和列名。我尝试将这些行和列名称分配给我正在绘制的矩阵(这通常适用于barplot()),但没有起作用。我有预感它与par()或xaxs/yaxs参数有关

例如:

# fixes 90-degree rotation
image.real = function(mat) image(t(mat)[,nrow(mat):1])

A = matrix(runif(4),2,2)
colnames(A) = 1:2
rownames(A) = 1:2

image.real(A)
产生:

然而,我希望列和行的标记方式与打印矩阵时的标记方式相同
print(A)

我正在寻找一个优雅的解决方案

另外,如果你能给出一些关于在R中使用image()的实用建议,而不会因为90度旋转而发疯,那么你将获得额外的积分。我目前定义了自己的“修复”此行为的函数:

image.real=函数(mat)图像(t(mat)[,nrow(mat):1])


但我很想知道是否有更好的方法

如果希望按矩阵的打印顺序而不是按
image()
的显示顺序显示矩阵,则函数看起来很好。这里有一个添加标签的修改。没有健全性检查,所以如果您的矩阵缺少行名称或列名,它可能不会执行您想要的操作

image.real <- function(mat) { 
  mat <- t(mat)[,nrow(mat):1]
  image(mat, axes = FALSE)
  axis(1, at = seq(0, 1, length = nrow(mat)), labels = rownames(mat))
  axis(2, at = seq(0, 1, length = ncol(mat)), labels = colnames(mat))
  box() 
}

image.real请提供更多详细信息,包括要绘制的矩阵类型的示例。通常情况下,您会使用
image();你的矩阵有多大?我编辑了这个问题,我正在寻找一个足够小的范围,其中各个行和列都是相关的。请给出一个你想要绘制的矩阵类型的示例,用R代码,而不是描述性的。如果你手头有一个矩阵,你可以使用
dput()
,或者生成一个假的矩阵。为了让你的问题能够被接受,它通常需要“包括期望的行为、特定的问题或错误,以及重现问题所需的最短代码。”你是说在代码中明确?我确实指定了想要的行为…谢谢你的回答!您知道如何使标签与轴正交吗?我发现当名称变得稍微太长时,它们在您给定的方向上会变得难以辨认。我建议进行编辑以解决此问题,显然您只需要在image()函数下面添加par(las=2)。
image.real <- function(mat) { 
  mat <- t(mat)[,nrow(mat):1]
  image(mat, axes = FALSE)
  axis(1, at = seq(0, 1, length = nrow(mat)), labels = rownames(mat))
  axis(2, at = seq(0, 1, length = ncol(mat)), labels = colnames(mat))
  box() 
}
x <- matrix(1:6, nrow = 2)
rownames(x) <- c("r1", "r2")
colnames(x) <- c("c1", "c2", "c3")
image.real(x)