【发布时间】:2020-04-23 02:07:42
【问题描述】:
我正在尝试构建一些由 2 个相互镜像排列的直角三角形组成的图形。最终的图将具有唯一的数据集,但现在我正在绘制相同的数据。我更熟悉(可能被宠坏了)ggplot,但我发现在基础 R 中移动轴位置要容易得多。如果有人知道如何在 ggplot 中复制这些直角三角形图,我会接受这个答案!
我在调整间距和布局时遇到问题。我对基础 R 绘图不太熟悉,如果这些有点基础,请见谅。
我特别想:
将三角形靠得更近
使标签可见(并使用不是
**main**的顶部标签)使对角线与轴齐平
-
制作等长三角形的“腿”
library(cowplot) my.data <- data.frame( my.x = c(.2,.4,.6, .1), my.y = c(.3, .5, .7, .9) ) top.triangle <- function(){ plot( my.y ~ my.x, data = my.data, axes = FALSE, ylab = 'Position.2', xlab = NA, main='Position.1', xlim=c(0,1), ylim=c(0,1), xaxt="n", yaxt="n" ) axis(side = 2, las = 1, pos=0) axis(side = 3, las = 1, pos=1) abline(coef = c(0,1)) } bottom.triangle <- function() { plot( my.x ~ my.y, data = my.data , axes = FALSE, xlab = 'Position.2', ylab = 'Position.1', xlim=c(0,1), ylim=c(0,1), xaxt="n", yaxt="n" ) axis(side = 1, las = 1, pos=0) axis(4, las = 1, pos=1) #flip label to right side abline(coef = c(0,1))} plot_grid(top.triangle, bottom.triangle, rel_widths = c(.5,.5))
谢谢!
【问题讨论】:
-
你是如何得到这张图片的? cowplot 不适用于基本图形。它们应该有多近?如果您将
par(mar = )设置为0,它们仍然不会那么接近。使用segments(0, 0, 1, 1)而不是abline和par(mfrow = c(1, 2))或layout而不是cowplot腿取决于您的设备尺寸和边距 -
如果你想让三角形靠得很近,我认为在一个单独的图上绘制比在两个单独的图上绘制要好。
-
with(my.data, { plot(c(my.x, my.y), c(my.y, my.x), asp = 1); segments(0, 0, 1, 1); abline(v = 0:1, h = 0:1) })有什么问题