【问题标题】:R ggplot focusing in region and different scale in one axisR ggplot聚焦在区域和一个轴上的不同比例
【发布时间】:2014-04-27 04:54:01
【问题描述】:

我用谷歌搜索,但找不到我的问题的答案。我有一些约会:

  • 温度日期(区域为 30 至 60 gr Celsia)
  • 瓦特消费日期(100 至 160 瓦地区)
  • 以 GHz 为单位的频率日期(1.2 至 3.1 GHz 区域)

然后我将这些日期绘制在一张图中,我看不出频率有什么不同(它太小了)。

如何在步骤 0.1 和返回步骤 10 后添加 1.2 到 3.1 等轴刻度?

以及如何为 1.2 到 3.1 之类的区域添加比例(它会像步长一样大,否则我看不到 10。步长太小了)以及在步骤 10 恢复到正常比例后?

我不会在轴的某些区域聚焦,为聚焦区域添加一些比例。

附:如果设置多轴,我可以在 gnuplot 中执行此操作,但我想在 R 中尝试。

附:附言对不起英语

library(ggplot2)
s=matrix(0,10,4);
s[1:10,1]=1:10;
s[1:10,2]=1.2:3.1;
s[1:10,3]=70:79;
s[1:10,4]=150:159;
colnames(s) = c("time", "freq", "temp", "power");
ggplot(data=NULL, aes(x=s[,1], ) ) +
    geom_line( aes(y=s[,3], color="blue") )  +
    geom_line( aes(y=s[,4], color="red") )  +
    geom_line( aes(y=s[,2], color="green") ) +
    scale_y_continuous(breaks=c(1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,2.1,2.2,2.3,2.4,2.5,2.6,2.7,2.8,2.9,3.0,3.1,4,6,8,10) );

【问题讨论】:

  • 欢迎来到 SO。如果您向他们提供有关您的问题的清晰说明,人们将(并且可以)更好地帮助您。请阅读有关如何提供reproducible example 的常见问题解答。这需要你付出更多的努力,但我可以根据经验告诉你,付出额外的努力是值得的。

标签: r ggplot2 scale


【解决方案1】:

您的数据的“问题”是freqtemppower 变量的比例非常不同。因此,当您将它们全部组合在一个图中时,几乎看不到 freq 变量的变化。此外,对于其他两个变量,随着时间的推移,很难看到其发展。

在这种情况下,使用分面图可能更明智:

# transforming the data into a dataframe of the long format
df <- as.data.frame(s)
require(reshape2)
df2 <- melt(df, id="time")

# creating the plot
ggplot(df2, aes(x=time, y=value, color=variable)) +
  geom_line() +
  facet_grid(variable ~., scales="free_y")

结果:

【讨论】:

  • 我已经尝试过 scale_y_continuous(breaks= 但它确实介于刻度之间 (1.2, 1.3, 1.4 ... 3.1) 如此之小。
  • scale_y_log可以在不同的轴范围内设置不同的比例吗?
  • 您可以像在scale_y_continuous 中一样定义scale_y_log10 中的中断。
  • 抱歉,忘记添加了,试过 scale_y_log10 但对我来说不太好如果我有线性刻度(不是 log 或 log10)会很棒
  • 你看到我对这个问题的评论了吗?如果添加您已经尝试过的代码和一些示例数据会很有帮助。这将使我更容易为您提供帮助。
猜你喜欢
  • 2017-07-17
  • 2011-03-07
  • 2012-05-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多