Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.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
Math 不希望在绘图轴上使用科学符号_Math_R_Graphics - Fatal编程技术网

Math 不希望在绘图轴上使用科学符号

Math 不希望在绘图轴上使用科学符号,math,r,graphics,Math,R,Graphics,我经常使用plot命令在R中绘制各种散点图 有时两者都有,有时只有一个绘图轴用科学符号标注。我不明白R什么时候决定改用科学记数法。令人惊讶的是,它经常打印出任何一个正常人在标记一个图时都不会用科学符号书写的数字,例如,它将5标记为5e+00。假设一个对数轴上升到1000,科学记数法对于如此“小”的数字是不合理的 我想抑制这种行为,我总是希望R显示整数值。这可能吗 我尝试了选项(scipen=10),但是它开始写5.0而不是5,而在另一个轴上,5仍然是5等等。我怎么能在我的R图中有纯整数值 我正在

我经常使用
plot
命令在R中绘制各种散点图

有时两者都有,有时只有一个绘图轴用科学符号标注。我不明白R什么时候决定改用科学记数法。令人惊讶的是,它经常打印出任何一个正常人在标记一个图时都不会用科学符号书写的数字,例如,它将5标记为5e+00。假设一个对数轴上升到1000,科学记数法对于如此“小”的数字是不合理的

我想抑制这种行为,我总是希望R显示整数值。这可能吗

我尝试了
选项(scipen=10)
,但是它开始写5.0而不是5,而在另一个轴上,5仍然是5等等。我怎么能在我的R图中有纯整数值


我正在Windows 7上使用R2.12.1。

您可以使用
格式
格式
来格式化轴标签

对于整数,请尝试

x <- 10 ^ (1:10)
format(x, scientific = FALSE)
formatC(x, digits = 0, format = "f")
如何将标签粘贴到轴上取决于所使用的打印系统。

您可以使用
axis()
命令进行此操作,例如:

x <- 1:100000
y <- 1:100000
marks <- c(0,20000,40000,60000,80000,100000)
plot(x,y,log="x",yaxt="n",type="l")
axis(2,at=marks,labels=marks)
x您可以尝试:

require(晶格)

x使用
选项(scipen=5)
或其他足够高的数字。scipen选项确定R切换到科学记数法的可能性,值越高,切换的可能性越小。在绘制绘图之前设置该选项,如果它仍然有科学记数法,请将其设置为更高的数字。

试试这个。我故意拆下了不同的部分,这样你就可以移动东西了

library(sfsmisc)

#Generate the data
x <- 1:100000
y <- 1:100000

#Setup the plot area
par(pty="m", plt=c(0.1, 1, 0.1, 1), omd=c(0.1,0.9,0.1,0.9))

#Plot a blank graph without completing the x or y axis
plot(x, y, type = "n", xaxt = "n", yaxt="n", xlab="", ylab="", log = "x", col="blue")
mtext(side=3, text="Test Plot", line=1.2, cex=1.5)

#Complete the x axis
eaxis(1, padj=-0.5, cex.axis=0.8)
mtext(side=1, text="x", line=2.5)

#Complete the y axis and add the grid
aty <- seq(par("yaxp")[1], par("yaxp")[2], (par("yaxp")[2] - par("yaxp")[1])/par("yaxp")[3])
axis(2, at=aty, labels=format(aty, scientific=FALSE), hadj=0.9, cex.axis=0.8, las=2)
mtext(side=2, text="y", line=4.5)
grid()

#Add the line last so it will be on top of the grid
lines(x, y, col="blue")
库(sfsmisc)
#生成数据

x通常设置变量最大值时的轴限制就足够了

a <- c(0:1000000)
b <- c(0:1000000)

plot(a, b, ylim = c(0, max(b)))

aR
graphics
软件包具有函数
axTicks
,该函数返回
轴和
绘图
函数将自动设置的记号位置。此问题的其他答案手动定义勾号位置,这在某些情况下可能不方便

myTicks = axTicks(1)
axis(1, at = myTicks, labels = formatC(myTicks, format = 'd'))
一个最起码的例子是

plot(10^(0:10), 0:10, log = 'x', xaxt = 'n')
myTicks = axTicks(1)
axis(1, at = myTicks, labels = formatC(myTicks, format = 'd'))

axTicks
函数中还有一个
log
参数,但在这种情况下,不需要设置它来获得正确的对数轴刻度位置。

我刚刚想到用轴和字符串而不是数字来获得“纯整数”(即引用数字)?@Henrik:也可以,但使用格式的想法是,您可以为位置和标签提供一个向量。您可以在不同的绘图中重复使用该向量。我调整了代码以显示这一点。在rstudio中,如果您导入数据集并执行train_sample_10k=格式(train_sample_10k,scientific=FALSE)然后重新加载,它将更改科学符号。@mixdev显然。如果您选中
?format
,您会看到它返回一个带有符号的字符串。如果重新加载,您将用原始值覆盖字符串。
format()
没有设置一些格式属性,它生成文本。因此,作为参数值使用
标签
我怎么从来没有见过这个答案/文档的
scientific=FALSE
部分如果你真的读过我的原始问题,你会读到“我尝试了选项(scipen=10)”但随后它开始编写5.0而不是5.0“。我希望数字写为5而不是5.0,依此类推。@gojira但您是否尝试了
scipen
的其他值?”?你试过了吗?你是对的,我没想到你已经试过了。其他人指出,你可以使用axis函数,通过format、sprintf和pretty等函数将你想要的东西精确地放在你想要的地方。这并不是特别有用,因为OP已经声明他们正在使用
plot()
@PeterEllis这怎么没有帮助?如果使用
plot
tou可以控制axis,请参阅此线程中的其他答案:(行以
axis(
)开头。在Nope中有更多关于格式化数字的建议,它不是,您的答案不需要解释这会产生什么影响。
a <- c(0:1000000)
b <- c(0:1000000)

plot(a, b, ylim = c(0, max(b)))
myTicks = axTicks(1)
axis(1, at = myTicks, labels = formatC(myTicks, format = 'd'))
plot(10^(0:10), 0:10, log = 'x', xaxt = 'n')
myTicks = axTicks(1)
axis(1, at = myTicks, labels = formatC(myTicks, format = 'd'))