Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
绘制信用评级时间序列(字母)R ggplot2楼梯图_R_Ggplot2 - Fatal编程技术网

绘制信用评级时间序列(字母)R ggplot2楼梯图

绘制信用评级时间序列(字母)R ggplot2楼梯图,r,ggplot2,R,Ggplot2,我试图为信用评级时间序列绘制一个阶梯图,但我获得的图在每个步骤之间都是断开的。我希望当信用评级上升或下降时,情节不会中断。见下面的例子 ratings = c("BB+", "BBB+", "A-", "A", "A") dates = c("2005-04-27", "2005-04-28", "2008-05-01", "2009-05-02", "2010-05-03") df = data.frame(dates, ratings) df$ratings = factor(df$ra

我试图为信用评级时间序列绘制一个阶梯图,但我获得的图在每个步骤之间都是断开的。我希望当信用评级上升或下降时,情节不会中断。见下面的例子

ratings = c("BB+", "BBB+", "A-", "A", "A")
dates = c("2005-04-27", "2005-04-28", "2008-05-01", "2009-05-02", "2010-05-03")

df = data.frame(dates, ratings)

df$ratings = factor(df$ratings, levels=rev(unique(df$ratings))) # order credit ratings

library("ggplot2")
ggplot(df, aes(x=dates)) + 
  geom_step(aes(y = ratings))+
  ylab(label="Ratings") + 
  xlab("Date")

问题在于
geom\u步骤
是建立在
geom\u行
上的,默认情况下将分类因子拆分为单独的行。因此,在本例中,
geom_step
按预期工作,但由于每个类别位于一条水平线上,因此您永远看不到一个步骤。我们可以通过设置
group=1
覆盖默认分组来克服这一问题。另外,当您创建示例数据时,日期向量应该包装在
as.date

ratings = c("BB+", "BBB+", "A-", "A", "A")
dates = as.Date(c("2005-04-27", "2005-04-28", "2008-05-01", "2009-05-02", "2010-05-03"))

df = data.frame(dates, ratings)

df$ratings = factor(df$ratings, levels=rev(unique(df$ratings))) # order credit ratings

library("ggplot2")
ggplot(df, aes(x=dates)) + 
  geom_step(aes(y = ratings, group = 1))+
  ylab(label="Ratings") + 
  xlab("Date")

绘制多个时间序列 要使用ggplot绘制多个系列,需要“长”数据,其中每行包含一个观测值。这意味着,不是每个系列都有一列,而是有一列用于评级,一列用于相应日期,还有一列用于标记每个系列(
dplyr
restrape2
包擅长将数据转换为长格式)。例如:

ratings = c("BB+", "BBB+", "A-", "A", "A", "BBB+")
dates = as.Date(c("2005-04-27", "2005-04-28", "2008-05-01", "2009-05-02", "2010-05-03", "2011-01-01"))
rating.series = factor(c(1, 1, 1, 2, 2, 2))

df = data.frame(dates, ratings, rating.series)

df$ratings = factor(df$ratings, levels=rev(unique(df$ratings))) # order credit ratings

library("ggplot2")
ggplot(df, aes(x=dates)) + 
  geom_step(aes(y = ratings, group = rating.series, color = rating.series))+
  ylab(label="Ratings") + 
  xlab("Date")

问题在于
geom\u步骤
是建立在
geom\u行
上的,默认情况下将分类因子拆分为单独的行。因此,在本例中,
geom_step
按预期工作,但由于每个类别位于一条水平线上,因此您永远看不到一个步骤。我们可以通过设置
group=1
覆盖默认分组来克服这一问题。另外,当您创建示例数据时,日期向量应该包装在
as.date

ratings = c("BB+", "BBB+", "A-", "A", "A")
dates = as.Date(c("2005-04-27", "2005-04-28", "2008-05-01", "2009-05-02", "2010-05-03"))

df = data.frame(dates, ratings)

df$ratings = factor(df$ratings, levels=rev(unique(df$ratings))) # order credit ratings

library("ggplot2")
ggplot(df, aes(x=dates)) + 
  geom_step(aes(y = ratings, group = 1))+
  ylab(label="Ratings") + 
  xlab("Date")

绘制多个时间序列 要使用ggplot绘制多个系列,需要“长”数据,其中每行包含一个观测值。这意味着,不是每个系列都有一列,而是有一列用于评级,一列用于相应日期,还有一列用于标记每个系列(
dplyr
restrape2
包擅长将数据转换为长格式)。例如:

ratings = c("BB+", "BBB+", "A-", "A", "A", "BBB+")
dates = as.Date(c("2005-04-27", "2005-04-28", "2008-05-01", "2009-05-02", "2010-05-03", "2011-01-01"))
rating.series = factor(c(1, 1, 1, 2, 2, 2))

df = data.frame(dates, ratings, rating.series)

df$ratings = factor(df$ratings, levels=rev(unique(df$ratings))) # order credit ratings

library("ggplot2")
ggplot(df, aes(x=dates)) + 
  geom_step(aes(y = ratings, group = rating.series, color = rating.series))+
  ylab(label="Ratings") + 
  xlab("Date")

ggplot(df,aes(日期,评级,组=1))+geom_step()
但是您当前的代码没有生成该绘图,您已经展示了如果我想在同一绘图上绘制三个系列的评级,该怎么办?换言之,我将使用df=date.frame(dates,ratings1,ratings2,ratings3),我想在同一个绘图上绘制所有三个系列?我尝试了ggplot(df,aes(x=dates))+geom_步骤(aes(y=ratings1,group=1))+geom_步骤(aes(y=ratings2,group=1))+geom_步骤(aes(y=ratings3,group=1))+ylab(label=“Ratings”)+xlab(“Date”),但y轴没有保持正确的顺序。
ggplot(df,aes(dates,Ratings,group=1))+geom_步骤()
但是您当前的代码没有生成您显示的绘图。如果我想在同一绘图上绘制三个系列的评级,该怎么办?换言之,我将使用df=date.frame(dates,ratings1,ratings2,ratings3),我想在同一个绘图上绘制所有三个系列?我试过ggplot(df,aes(x=dates))+geom_步骤(aes(y=ratings1,group=1))+geom_步骤(aes(y=ratings2,group=1))+geom_步骤(aes(y=ratings3,group=1))+ylab(label=“Ratings”)+xlab(“Date”),但是y轴没有保持正确的顺序。请看一下我上面发表的评论好吗?这似乎很有效,但顺序不起作用。只有一个系列,就可以用A作为最高值,BB+作为最低值来排列Y轴(请参见问题中的图表),您将如何修改代码来实现这一点?只需尝试
Y=factor(df$ratings,levels=(unique(df$ratings)))
是否可以将颜色更改为不同类型的线条,以区分绘图上的系列?例如,红色变成一条整线,蓝色变成一条虚线?这将有助于以黑白打印情节。“lty”或“线型”美学正是如此。您可以看看我上面发布的评论吗?这似乎很有效,但排序不起作用。只有一个系列,就可以用A作为最高值,BB+作为最低值来排列Y轴(请参见问题中的图表),您将如何修改代码来实现这一点?只需尝试
Y=factor(df$ratings,levels=(unique(df$ratings)))
是否可以将颜色更改为不同类型的线条,以区分绘图上的系列?例如,红色变成一条整线,蓝色变成一条虚线?这将有助于以黑白打印绘图。“lty”或“线型”美学正是这样做的。