R折线图,绘图区域外的值

Posted

技术标签:

【中文标题】R折线图,绘图区域外的值【英文标题】:R line graphs, values outside plot area 【发布时间】:2017-04-14 23:28:11 【问题描述】:

我在 10 个时间点(行)获取了 300 个变量(列),对于任何给定时间点的每个变量,我都有温度值 A 和 F。

附件是数据框的示例

 structure(list(Timepoint = c(1L, 1L, 2L, 2L, 3L, 3L, 4L, 4L, 
 5L, 5L, 6L, 6L, 7L, 7L, 8L, 8L, 9L, 9L, 13L, 13L, 25L, 25L), 
 Temperature = structure(c(1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 
 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L), .Label = c("A", 
"F"), class = "factor"), Concentration.of.chylomicrons = c(1.29e-11, 
1.25e-11, 1.02e-11, 1.1e-11, 1.08e-11, 1.3e-11, 1.28e-11, 
1.26e-11, 1.06e-11, 1.32e-11, 8.85e-12, 1.21e-11, 8.83e-12, 
1.08e-11, 1.35e-11, 1.12e-11, 8.99e-12, 1.08e-11, 9.55e-12, 
1.04e-11, 0, 1.01e-11), Total.lipids = c(0.00268, 0.0026, 
0.00208, 0.00225, 0.00222, 0.0027, 0.00268, 0.0026, 0.00219, 
0.00273, 0.0018, 0.00247, 0.00179, 0.00221, 0.00276, 0.00229, 
 0.00182, 0.00222, 0.00195, 0.00212, 0, 0.00204), Phospholipids = c(0.000224, 
0.000223, 0.000145, 0.00016, 0.000157, 0.000211, 0.00023, 
0.000211, 0.000165, 0.000224, 0.000109, 0.00018, 0.000113, 
0.000163, 0.000175, 0.000177, 0.000122, 0.000173, 0.000127, 
0.000156, 0, 0.000138)), .Names = c("Timepoint", "Temperature", 
"Concentration.of.chylomicrons", "Total.lipids", "Phospholipids"
), class = "data.frame", row.names = c(NA, -22L))

我想绘制一个折线图来显示每个变量如何随时间变化。在这个折线图上,我想画出 A 线和 F 线。我已经成功地为此编写了循环代码。

# subset based on temperatures A and F
a_df <- subset(df, Temperature == "A")
f_df <- subset(df, Temperature == "F")

# loop from columns 3:x 
for (i in 3:x) 
  plot(a_df[, 1], 
       a_df[, i], 
       type = "l",
       ylab = colnames(a_df[i]),
       xlab = "Timepoint",
       lwd = 2,
       col = "blue")
  lines(f_df[, 1],
        f_df[, i],
        type = "l",
        lwd = 2,
        col = "red")
  legend("bottomleft", 
         col = c("blue", "red"), 
         legend = c("Temperature A", "Temperature F"), 
         lwd = 2,
         y.intersp = 0.5,
         bty = "n")

但是对于某些变量,某些点在绘图区域之外,图片附在下面

Please click on this link for image 我怎样才能确保在这个循环命令中我可以看到所有点都可见的 graghs。我确定有一个快速的方法来解决这个问题,有人可以帮忙吗?

我已经尝试了以下行,请建议 ylim = c(min(f_df[,-1] ,max(f_df[,-1]),

我收到以下错误消息

for (i in 3:229) +情节(a_df [,1], + a_df[, i], + 类型 = "b", + ylim = c(min(f_df[,-1] ,max(f_df[,-1]), + ylab = colnames(f_df[i]), + 主要 = colnames(f_df[i]), + xlab = "时间点", + lwd = 2, + col =“红色”) + 线(f_df[,1], 错误:出现意外符号: " col = "红色") 线” f_df[, 我], 错误:“f_df[, i],”中出现意外的“,” 类型 = "b", 错误:“类型=”b”中的意外',', lwd = 2, 错误:“lwd = 2”中的意外“,” col =“蓝色”) 错误:" col = "blue")" 中出现意外的 ')' 图例(“左下角”, + col = c("红色", "蓝色"), + 图例 = c("环境", "冰箱"), + lwd = 2, + y.intersp = 0.5, + bty = "n") strwidth 中的错误(图例,单位 =“用户”,cex = cex,字体 = text.font): plot.new 尚未被调用 错误:“”中出现意外的“”

拉克马尔

【问题讨论】:

在你的绘图命令中尝试ylim = c(min(f_df[,-1] ,max(f_df[,-1]) 我在命令中写那行的位置是否重要,我得到的错误没有任何情节 将绘图限制添加到 for 循环中的 plot 函数以匹配数据范围是否是一个想法?类似于:ylim = c(min(a_df[, i],f_df[, i]),max(a_df[, i],f_df[, i])), 编辑:与 dww 相同的建议,但我认为您需要将范围指定为两个数据集中的最小值和最大值。您需要将命令放在plot 函数中才能工作。 太棒了——谢谢你们俩。它工作:) 【参考方案1】:

总结一下答案。设置ylim 即可解决问题

# loop from columns 3:x 
for (i in 3:x) 
  plot(a_df[, 1], 
       a_df[, i], 
       type = "l",
       ylab = colnames(a_df[i]),
       xlab = "Timepoint",
       ylim = c(min(df[,-1]) ,max(df[,-1])),
       lwd = 2,
       col = "blue")
...

将每个绘图的绘图边界设置为相等,如果您想比较绘图,这会更好,但缺点是绘图区域可能比您的数据大得多。

# loop from columns 3:x 
for (i in 3:x) 
  plot(a_df[, 1], 
       a_df[, i], 
       type = "l",
       ylab = colnames(a_df[i]),
       xlab = "Timepoint",
       ylim = c(min(df[,i]) ,max(df[,i])),
       lwd = 2,
       col = "blue")
...

为每个绘图设置新的边界,这不利于比较,但减少了不必要的空白绘图空间。我已经用min(df[,i]) 替换了min(a_df[, i],f_df[, i]),因为它们应该是相同的。

【讨论】:

以上是关于R折线图,绘图区域外的值的主要内容,如果未能解决你的问题,请参考以下文章

R语言 | 折线图和趋势线拟合

matlab绘图函数条形图极坐标土折线图等matlab图行绘制八

matlab绘图函数条形图极坐标土折线图等matlab图行绘制八

数据可视化应用区域渐变填充折线图(R语言&Python实现)

数据可视化应用区域渐变填充折线图(R语言&Python实现)

可视化实验十二:利用Python绘制箱线图折线图