【问题标题】:R plot graphs with large numbersR绘制大数字图
【发布时间】:2026-02-05 21:15:01
【问题描述】:

我正在使用 R 并且有一个数据值范围为 600-225,000 的数组。我可以很好地绘制它,但是刻度线的标签会覆盖轴的标签。

现在的代码是:

g_range=range(0,list)
plot(list, axes=FALSE, ylab="Total")
axis(2, at=15000*0:g_range[2])

我只是希望能够看到值和标签

【问题讨论】:

  • 我无法重现该问题。当我尝试复制您的图表时,默认的 plot 轴似乎很好。您是否可能将一些设置传递给par?尝试在干净的环境中再次运行您的代码,看看会发生什么。

标签: r plot ggplot2


【解决方案1】:

为了给您更多空间,请将 y 轴轴标签旋转 90 度并将 y 轴描述移出一两行:

 #Generate the data
 list<-exp(seq(log(600), log(225000), length.out=10))
 g_range=range(0,list)

 #Setup the plotting area and plot it
 par(plt=c(0.2, 0.9, 0.2, 0.9))
 plot(list, axes=FALSE, xlab="", ylab="")

 #Plot the x-axis
 axis(1)
 mtext("Index", side=1, line=2)

 #Plot the y-axis     
 axis(2, las=2)
 mtext("Total", side=2, line=5)

【讨论】:

    【解决方案2】:

    当我有很多值时,我喜欢使用ggplot2,因为它很容易设置点的不透明度。例如,这使得您需要 20 个重叠点才能获得一个黑点。它很整洁。 ggplot2 还具有设置轴标签的合理默认值,因此您不必担心太多。

    library(ggplot2)
    dat <- data.frame(x1=rnorm(150000), x2=rnorm(150000))
    ggplot(dat, aes(x1,x2))+geom_point(alpha=0.05)
    

    【讨论】:

    • -1 虽然你的情节很好地说明了alpha,但我认为这不能回答问题。
    • 我不得不说我对此不太高兴。这个问题还很不清楚,它甚至没有提供一个可重复的例子。我经历了产生人工数据的麻烦并绘制了它。如果数据看起来不像问题中的数据,这显然意味着我没有理解 OP 的要求。如果 OP 提出了一个更好的问题,也许他会得到更好的答案。
    • 好的。也许downvote有点太苛刻了。我已经扭转了这一点。我同意你的看法——这个问题不是特别清楚。