如何在ggplots(R)的图形线中设置行网格的高度?

时间:2018-03-31 22:46:31

标签: r ggplot2

我正在尝试使用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")

这是我的实际图表: enter image description here

..第一行距离第二行很远。我怎样才能减少高度?

问候。

2 个答案:

答案 0 :(得分:1)

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

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

    1. 我知道有些图表会出现a&#34; squiggle&#34;改变比例或跳过空间。一般来说,这被认为是不好的做法(我怀疑它是ggplot2中的一个选项,因为它掩盖了数据点之间的真正分离。如果你真的想要一个差距,我会看看这篇文章:{{3} }
    2. 简而言之,这里的答案取决于你的数字意味着什么。你要讲的是什么故事?图表的重要特征是它们之间的变化(在这种情况下,标准化可能是您的最佳选择),或实际数字本身(在这种情况下,空间是相关的)。

答案 1 :(得分:0)

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

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