【问题标题】:How to set heigth of rows grid in graph lines on ggplots (R)?如何在ggplots(R)的图形线上设置行网格的高度?
【发布时间】:2018-04-01 07:32:35
【问题描述】:

我正在尝试使用 R 中的 ggplot 库绘制图形线,但我得到了一个很好的图,但我需要减少行网格线之间的渐变空间或高度,因为我在线条之间有很大的分离。

这是我的 R 脚本:

library(ggplot2)
library(reshape2)

data <- read.csv('/Users/keepo/Desktop/G.Con/Int18/input-int18.csv')

chart_data <- melt(data, id='NRO')
names(chart_data) <- c('NRO', 'leyenda', 'DTF')

ggplot() +
  geom_line(data = chart_data, aes(x = NRO, y = DTF, color = leyenda), size = 1)+
  xlab("iteraciones") +
  ylab("valores")

这是我的实际图表:

..第一行离第二行很远。怎样才能减身高?

问候。

【问题讨论】:

  • 如果您的数据相距那么远,那就是数据的准确表示。
  • 您可以使用+ facet_grid(leyenda~., scales = 'free') 分隔三行。
  • 感谢您的回答。 @Jack B.,我知道,很明显,但我需要减少。我尝试了你的脚本,但这对我不起作用,因为我必须是一个简单的收敛者,这种方式不适合我的工作。

标签: r ggplot2


【解决方案1】:

线条相距很远,因为绘制在 y 轴上的变量值相距很远。如果您需要将它们更紧密地结合在一起,您基本上有 3 个选择:

  1. 更改比例(例如,将绘图转换为对数比例),尽管这会使人们更难解释数字。这也可以改变每一行的行为,而不仅仅是改变行之间的空间。我猜这最终不是你想要的。
  2. 标准化数据。如果 y 轴上变量的实际值不重要,只需对数据进行标准化(分别针对 leyenda 的每个值)。
  3. 如上所述,您可以单独绘制每条线。这里的主要缺点是您需要 3 个图表,而 1 个可能会这样做。

不推荐:

  1. 我知道有些图表会带有“曲线”来更改比例或跳过空格。一般来说,这被认为是不好的做法(我怀疑它是 ggplot2 中的一个选项,因为它掩盖了数据点之间的真正分离。如果你真的想要一个差距,我会看这篇文章:axis.break and ggplot2 or gap.plot? plot may be too complexe

简而言之,这里的答案取决于您的数字的含义。你想要讲述的故事是什么?您的图的重要特征是它们之间的变化(在这种情况下,标准化可能是您的最佳选择),还是实际数字本身(在这种情况下,空间是相关的)。

【讨论】:

  • 你好@Melissa,我只需要直观地比较这三行。每条线代表一种算法的效率,用值表示。
  • 你在比较什么?如果是绝对分数,那么情节是准确的。如果您希望将相对变化作为 x 变量的函数,请标准化您的分数。也许你想要两者 - 在这种情况下,使用两个图。
  • 这 3 行是算法学习(启发式)的结果,每个算法必须最小化一个质量值,然后每行说明每个算法的学习如何,只要它最小化。图表只是为了看行为,仅此而已。
【解决方案2】:

您可以使用轴转换以非线性方式将数据映射到屏幕,

fun_trans <- function(x){

  d <- data.frame(x=c(800, 2500, 3100), y=c(800,1950, 3100))
  model1 <- lm(y~poly(x,2), data=d)
  model2 <- lm(x~poly(y,2), data=d)

  scales::trans_new("fun", 
                    function(x) as.vector(predict(model1,data.frame(x=x))), 
                    function(x) as.vector(predict(model2,data.frame(y=x))))
}

last_plot() + scale_y_continuous(trans = "fun")

enter image description here

【讨论】:

    猜你喜欢
    • 2021-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-06
    • 2012-12-08
    • 1970-01-01
    相关资源
    最近更新 更多