R 使用ggplot扩展y轴

R 使用ggplot扩展y轴,r,ggplot2,R,Ggplot2,我从美联储网站上得到了一些利率数据,我正试图绘制一条收益率曲线。我打算将其与其他一些国家进行比较,并随着时间的推移保持一致,我希望在y轴上尽可能长的保持相同的轴范围,并且尽可能多的国家保持相同的轴范围。下面的代码scale\u y\u continuous(limits=c(0,7))或ylim(0,7)都给出了错误。有没有人想到我可能做错了什么?谢谢 library(reshape2) library(data.tool) library(ggplot2) x = struct

我从美联储网站上得到了一些利率数据,我正试图绘制一条收益率曲线。我打算将其与其他一些国家进行比较,并随着时间的推移保持一致,我希望在y轴上尽可能长的保持相同的轴范围,并且尽可能多的国家保持相同的轴范围。下面的代码
scale\u y\u continuous(limits=c(0,7))
ylim(0,7)
都给出了错误。有没有人想到我可能做错了什么?谢谢

library(reshape2)
library(data.tool)
library(ggplot2)

    x =    structure(list(Series.Description = c("2012-07-27", "2012-10-26"
        ), `1.month` = c("0.08", "0.12"), `6.month` = c("0.15", "0.15"
        ), `1.year` = c("0.17", "0.19"), `2.year` = c("0.23", "0.30"), 
            `5.year` = c("0.59", "0.78"), `10.year` = c("1.47", "1.81"
            ), `30.year` = c("2.51", "2.94")), .Names = c("Series.Description", 
        "1.month", "6.month", "1.year", "2.year", "5.year", "10.year", 
        "30.year"), row.names = c(1L, 4L), class = "data.frame")


    # dates as # of days
    z=c(30,182,365,730,1825,3650,10950)
    names(x)[1]="date"
    names(x)[-1]=c(30,182,365,730,1825,3650,10950)
    x=melt(x,id.vars=c(1))
    x$variable=levels(x$variable)[x$variable]
       x$variable=as.numeric(x$variable)

    ggplot(data=x,aes(x=variable,y=value,group=date,linetype=date)) + 
      geom_line(colour="red") + geom_point(colour="red") + 
      scale_x_continuous(breaks=z,labels=c("1M","6M","1Y","2Y","3Y","5Y","10Y")) +
      scale_linetype_manual(values=c(2,1)) + 
      scale_y_continuous(limits=c(0,7))
如果你做了
str(x)
你会看到发生了什么

> str(x)
'data.frame':   14 obs. of  3 variables:
 $ date    : chr  "2012-07-27" "2012-10-26" "2012-07-27" "2012-10-26" ...
 $ variable: num  30 30 182 182 365 ...
 $ value   : chr  "0.08" "0.12" "0.15" "0.15" ...
value
是一个字符,而不是mnel在其注释中所述的数字。因此,如果您将
列更改为数字数据类型,它至少应该打印。它是否提供您想要的输出是另一个问题。下面的代码似乎适合我

library(reshape2)
library(ggplot2)

x =    structure(list(Series.Description = c("2012-07-27", "2012-10-26"
    ), `1.month` = c("0.08", "0.12"), `6.month` = c("0.15", "0.15"
    ), `1.year` = c("0.17", "0.19"), `2.year` = c("0.23", "0.30"),
        `5.year` = c("0.59", "0.78"), `10.year` = c("1.47", "1.81"
        ), `30.year` = c("2.51", "2.94")), .Names = c("Series.Description",
    "1.month", "6.month", "1.year", "2.year", "5.year", "10.year",
    "30.year"), row.names = c(1L, 4L), class = "data.frame")


# dates as # of days
z=c(30,182,365,730,1825,3650,10950)
names(x)[1]="date"
names(x)[-1]=c(30,182,365,730,1825,3650,10950)
x=melt(x,id.vars=c(1))
x$variable=levels(x$variable)[x$variable]
   x$variable=as.numeric(x$variable)
x$value <- as.numeric(x$value)

ggplot(data=x,aes(x=variable,y=value,group=date,linetype=date)) +
  geom_line(colour="red") + geom_point(colour="red") +
  scale_x_continuous(breaks=z,labels=c("1M","6M","1Y","2Y","3Y","5Y","10Y")) +
  scale_linetype_manual(values=c(2,1)) +
  scale_y_continuous(limits=c(0,7))
这将提供以下输出:

稍微离题一点,请允许我指出,这似乎是一个非常简单的问题,但尚未得到回答,因为您使其难以回答。为什么很难回答

  • 您没有在顶部包含
    库(ggplot)
    和其他调用
  • 您包含了初始代码中未定义的函数
  • 您在代码之后而不是之前定义了结构
  • 您没有报告错误消息本身,这会很有用
  • 所有这一切都意味着人们正在将您的代码复制粘贴到他们的R安装中,在他们有机会看到您遇到的问题之前,它以多种方式失败。这里的人对修复代码问题感兴趣,但他们不想把上面概述的问题弄得一团糟

    另一方面,如果你让人们更容易帮助你,他们就会帮助你。因此,在发布之前仔细查看您的代码,复制它,打开一个新的R会话,粘贴它,并查看它是否符合您遇到的错误。如果是的话,很好,继续并发布一个问题。如果没有,请清理代码并重试。这是另一个初学者的建议,他在网上发布了一些不太好的问题。事实上,你确实试图把一个最小的可复制的例子放在一起,这表明你很想把它做好,但可能需要在发布之前多考虑一下。这是一个值得重新思考的问题。

    如果你做了
    str(x)
    你会看到发生了什么

    > str(x)
    'data.frame':   14 obs. of  3 variables:
     $ date    : chr  "2012-07-27" "2012-10-26" "2012-07-27" "2012-10-26" ...
     $ variable: num  30 30 182 182 365 ...
     $ value   : chr  "0.08" "0.12" "0.15" "0.15" ...
    
    value
    是一个字符,而不是mnel在其注释中所述的数字。因此,如果您将
    列更改为数字数据类型,它至少应该打印。它是否提供您想要的输出是另一个问题。下面的代码似乎适合我

    library(reshape2)
    library(ggplot2)
    
    x =    structure(list(Series.Description = c("2012-07-27", "2012-10-26"
        ), `1.month` = c("0.08", "0.12"), `6.month` = c("0.15", "0.15"
        ), `1.year` = c("0.17", "0.19"), `2.year` = c("0.23", "0.30"),
            `5.year` = c("0.59", "0.78"), `10.year` = c("1.47", "1.81"
            ), `30.year` = c("2.51", "2.94")), .Names = c("Series.Description",
        "1.month", "6.month", "1.year", "2.year", "5.year", "10.year",
        "30.year"), row.names = c(1L, 4L), class = "data.frame")
    
    
    # dates as # of days
    z=c(30,182,365,730,1825,3650,10950)
    names(x)[1]="date"
    names(x)[-1]=c(30,182,365,730,1825,3650,10950)
    x=melt(x,id.vars=c(1))
    x$variable=levels(x$variable)[x$variable]
       x$variable=as.numeric(x$variable)
    x$value <- as.numeric(x$value)
    
    ggplot(data=x,aes(x=variable,y=value,group=date,linetype=date)) +
      geom_line(colour="red") + geom_point(colour="red") +
      scale_x_continuous(breaks=z,labels=c("1M","6M","1Y","2Y","3Y","5Y","10Y")) +
      scale_linetype_manual(values=c(2,1)) +
      scale_y_continuous(limits=c(0,7))
    
    这将提供以下输出:

    稍微离题一点,请允许我指出,这似乎是一个非常简单的问题,但尚未得到回答,因为您使其难以回答。为什么很难回答

  • 您没有在顶部包含
    库(ggplot)
    和其他调用
  • 您包含了初始代码中未定义的函数
  • 您在代码之后而不是之前定义了结构
  • 您没有报告错误消息本身,这会很有用
  • 所有这一切都意味着人们正在将您的代码复制粘贴到他们的R安装中,在他们有机会看到您遇到的问题之前,它以多种方式失败。这里的人对修复代码问题感兴趣,但他们不想把上面概述的问题弄得一团糟


    另一方面,如果你让人们更容易帮助你,他们就会帮助你。因此,在发布之前仔细查看您的代码,复制它,打开一个新的R会话,粘贴它,并查看它是否符合您遇到的错误。如果是的话,很好,继续并发布一个问题。如果没有,请清理代码并重试。这是另一个初学者的建议,他在网上发布了一些不太好的问题。事实上,你确实试图把一个最小的可复制的例子放在一起,这表明你很想把它做好,但可能需要在发布之前多考虑一下。这是一个很好的问题,需要重新考虑。

    您在
    an
    melt
    期间使用了哪些套餐?您好,BenBarnes,抱歉<代码>一个是我自己的函数,可以将
    压缩为。数字
    ,月份来自
    数据。表
    和熔化来自
    重塑2
    最好将您的
    库()
    语句包含在代码中,首先定义
    x
    ,然后我们可以复制并粘贴您的代码。
    sfact
    也是您自己的功能之一吗?嗨@SlowLearner是的,这让人尴尬。我已经编辑了代码并包含了库语句。对不起,我的评论不够清晰。我的意思是,如果您可以在代码顶部包含
    库(ggplot2)
    库(重塑)
    等语句,这会有所帮助。然后将加载所有必要的库,我们不必查看代码来确定需要哪些库。这对于
    ggplot
    是很明显的,但正如你从BenBarnes的评论中所看到的,对于
    month
    之类的东西就不那么明显了。我想是lubridate,但是……您在
    融化
    期间使用的是什么套餐?您好,BenBarnes,抱歉<代码>一个
    是我自己的函数,可以将
    压缩为。数字
    ,月份来自
    数据。表
    和熔化来自
    重塑2
    最好将您的
    库()
    语句包含在代码中,首先定义
    x
    ,然后我们可以复制并粘贴您的代码。
    sfact
    也是您自己的功能之一吗?嗨@SlowLearner是的,这让人尴尬。我已经编辑了代码并包含了库语句t