小编Man*_*auf的帖子

轴标签的基线对齐

这可能很容易解决,但我没有用谷歌找到任何东西,也许是因为很难用语言表达。运行以下代码时

Dat<-matrix(c(1:10, 1:10, seq(0.1, 1, 0.1)), 10, 3)
par(mfrow=c(1, 2))
plot(Dat[,1], Dat[,2], ylab="Y", xlab=expression(paste("A unit (", m^2, ")", sep="")))
plot(Dat[,1], Dat[,3], ylab="Y", xlab="A unit")
Run Code Online (Sandbox Code Playgroud)

我得到了一个很好的图,但 x 轴标签不在同一基线上。原因是左图的标签有一个到达文本基线以下的括号,而 R 正在绘制标签,以便expression()在 xlab-command 中使用时将文本字符串的最低点作为基线。因此,右侧图中的“A 单位”比左侧图中打印得更靠下(参见示例图像,由红线表示)。如果某些标签的括号或字母的部分低于基线(如“g”、“q”等)而其他标签没有,那就很烦人了。有没有办法解决这个问题?

在此处输入图片说明

plot r axis-labels

5
推荐指数
1
解决办法
220
查看次数

R:如何在图中的负轴上使用正确的减号

我收到了对我提交出版的图的评论,通过测试才意识到一些我之前不知道的事情:当使用位图驱动程序时,R 似乎使用连字符而不是正确的减号来表示轴上的负值。有什么办法可以纠正吗?

library(extrafont)
loadfonts(device="win", quiet=TRUE)
png("Test.png", family="Helvetica", width=5, height=5, units="in", res=300)
plot(-3:3, -3:3)
text(-2, 2, labels=("\u2010 Hyphen"), pos=4)
text(-2, 1.5, labels=("\u002d Hyphen-Minus"), pos=4)
text(-2, 1, labels=("\u2212 Minus"), pos=4)
dev.off()
Run Code Online (Sandbox Code Playgroud)

如果您查看图像,轴上的负数显然用连字符而不是减号错误地标记。在此输入图像描述

使用pdf()-driver 时,负值正确使用减号。我知道对于pdf()-driver,这可以通过使用 来更改cairo-pdf()。但是,在- 或 -驱动程序中使用另一种类型(例如type="windows")不会将连字符更改为减号。png()tiff()

有没有办法使用 bitmab 驱动程序对负轴值使用正确的减号?

plot r typesetting mathematical-typesetting

4
推荐指数
1
解决办法
2918
查看次数

如何使lm解释公式中的eval

我希望让lm()接受一个字符串作为公式输入,但它不是很有效.这项工作到目前为止:

 Test<-as.data.frame(matrix(sample(1:100, 12), 4, 3))
 colnames(Test)<-c("Y", "X1", "X2")
 lm(Y~X1, data=Test)
 XT1<-"X1"
 lm(Y~eval(parse(text=XT1)), data=Test)
Run Code Online (Sandbox Code Playgroud)

这很好,并产生正确的输出.但是,当我试图拥有多个参数时:

 lm(Y~X1+X2, data=Test)
 XT2<-"X1+X2"
 lm(Y~eval(parse(text=XT2)), data=Test)
Run Code Online (Sandbox Code Playgroud)

这不会产生相同的结果.我想知道为什么因为显然字符串都被正确解释:

 parse(text=XT1)
 parse(text=XT2)
Run Code Online (Sandbox Code Playgroud)

对于背景:最后这应该在一个函数中工作,其中提供了一个参数矩阵,XT2字符串应该从矩阵的名字中动态创建,所以我需要一个适用于所有可能的XT2的解决方案长度在1和(假设)无穷大之间.

r

1
推荐指数
1
解决办法
919
查看次数