首页 理论教育 带阴影的曲线绘制为标题

带阴影的曲线绘制为标题

时间:2023-11-19 理论教育 版权反馈
【摘要】:在坐标系中确定两条有着相同X轴坐标的曲线,然后把它们中间的区域涂上颜色,这便是geom_ribbon的工作机制。但在第三章第三节使用恐怖袭击数据的练习中,我们使用了position="identity"或position_identity()。library # 需使用run SDdat=read.csv # 课件中的文件dat=dat[122: 165,] # 本例只使用6月19日至8月19日的数据added=run SD # 求5日标准差line_lower=dat$close-2*added # 阴影下边界line_upper=dat$close+2*added # 阴影上边界# 把每周周一的日期设定为X轴标签D=as.Dateas_week=formatpos=which # 提取所有是周一的日期pos=D[pos] # 放标签的位置lab=format # 标签内容图4-3-1带阴影的曲线p=ggplot()+geom_ribbon+geom_linep+scale_x_date+labs+labs+theme_void()+themegeom_area还可绘制堆积面积图。

带阴影的曲线绘制为标题

在坐标系中确定两条有着相同X轴坐标的曲线,然后把它们中间的区域涂上颜色,这便是geom_ribbon的工作机制。而geom_area则是geom_ribbon的特例:它把X轴当成两条折线中的一条。

library(ggplot2)

## geom_ribbon

x=1: 5; y1=1: 5; y2=2: 6

ggplot()+geom_ribbon(aes(x=x, ymin=y1, ymax=y2), fill="red", color="purple", size=2)

## geom_area

x=seq(-3, 3, 0.1); y=dnorm(x)

ggplot()+geom_area(aes(x=x, y=y), fill="red", color="purple", alpha=0.3)

下面对以上两个函数的参数进行总结:

color、alpha、size、linetype:轮廓线的属性。请参考对geom_line的介绍。

fill:填充色。注意:alpha参数会同时影响color和fill参数。

ymin、ymax:在geom_ribbon中用于确定两条曲线的位置。

position:分组绘制时每个图形的相对位置。注意:geom_area默认position="stack"或position_stack(),即绘制堆积图。但在第三章第三节使用恐怖袭击数据的练习中,我们使用了position="identity"或position_identity()。同理, position亦可设为position="fill"或position_fill()。

orientation:见第三章第一节关于coord_flip的内容。

outline.type:是否为阴影添加线条,选项为"upper"(添加上部线条,geom_area的默认值)、"lower"(添加下部线条)、"both"(添加上部和下部线条, geom_ribbon的默认值)、"full"(添加包裹阴影的线条)。

在下边的例子中,我们将用geom_ribbon呈现人民币美元汇率的波动趋势,图中的阴影区域代表收盘价+/-2倍的5日标准差。(图4-3-1)

library(TTR) # 需使用run SD

dat=read.csv("usdcny2019.csv", row.names=1) # 课件中的文件

dat=dat[122: 165,] # 本例只使用6月19日至8月19日的数据

added=run SD(dat$close, n=5, sample=FALSE) # 求5日标准差

line_lower=dat$close-2*added # 阴影下边界

line_upper=dat$close+2*added # 阴影上边界

# 把每周周一的日期设定为X轴标签

D=as.Date(dat$date)(www.xing528.com)

as_week=format(D, format="%u")

pos=which(as_week=="1") # 提取所有是周一的日期

pos=D[pos] # 放标签的位置

lab=format(pos, format="%m-%d") # 标签内容

图4-3-1 带阴影的曲线

p=ggplot()+geom_ribbon(na.rm=TRUE, aes(x=D, ymin=line_lower, ymax=line_upper), alpha=0.6, fill=scales::alpha("#3B4A73", 0.5), color="#3B4A73", size=0.8)+

geom_line(na.rm=TRUE, aes(D, dat$close), color="#6CC0FF", size=1)

p+scale_x_date(breaks=pos, labels=lab)+labs(x="Date", y="HSD/CNY")+

labs(title=" USD/CNY (CNY = X) 2019/6/19 ~ 8/19", subtitle=" Exchange Rate with +/- 2 * 5-Day Standard Error")+

theme_void()+

theme(plot.title=element_text(family="serif", face=2, size=21,color="yellow1"),

plot.subtitle=element_text(family="serif", face=3, size=16, color="yellow1"),

axis.text=element_text(color="#8DCCFB", size=14),

panel.grid.major=element_line(color=scales::alpha("#7C8498", 0.5)),

plot.background=element_rect(fill="#2F3856", color=NA),

plot.margin=unit(rep(3, 4), "mm")

)

geom_area还可绘制堆积面积图。这回我们仍使用原油产量数据,但我们不对每年的产量求和,而是用不同的颜色来表示各国的产量。

oil=read.csv("oil.csv", row.names=1) # 课件中的文件

mycolor=hcl.colors(7, palette="Plasma") # 选择配色

ggplot(oil)+

geom_area(aes(Year, Production, fill=Country), alpha=0.5)+ # 用Country变量进行分组

scale_fill_manual(values=mycolor)

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈