数据准备
corrgram包corrgram()函数。
corrgram(x, order=, panel=, text.panel=, diag.panel=)
其中,x是一行一个观测的数据框。当order = TRUE时,相关矩阵将使用主成分分析法对变量
重排序,这将使得二元变量的关系模式更为明显。选项panel设定非对角线面板使用的元素类型。你可以通过选项 lower.panel和upper.panel来分别设置主对角线下方和上方的元素类型。而text.panel和diag.panel选项控制着主对角线元素类型。
下三角部分,默认地,蓝色和从左下指向右上的斜杠表示单元格中的两个变量呈正相关。反过来,红色和从左上指向右下的斜杠表示变量呈负相关。色彩越深,饱和度越高,说明变量相关性越大。相关性接近于0的单元格基本无色。上三角单元格用饼图展示了相同的信息。颜色的功能同上,但相关性大小由被填充的饼图块的大小来展示。正相关性将从12点钟处开始顺时针填充饼图,而负相关性则逆时针方向填充饼图。
可以使用colorRampPallette()函数来指定四种颜色。
colorRampPalette 函数支持自定义的创建一系列的颜色梯度。
马赛克图(Mosaic Plot)是利用列联表对分类数据进行的图形表示,它可观察两个或多个分类变量之间的关系。
整个图形的长、宽概率值均为1,其被划分为多个矩形,每个矩形边长与所关联分类变量的概率分布成比例。
在马赛克图中,嵌套矩形面积正比于单元格频率,其中该频率即多维列联表中的频率。颜色和/或阴影可表示拟合模型的残差值。
vcd包mosaic()函数绘制马赛克图
mosaic()函数可按如下方式调用
mosaic(table)
其中table是数组形式的列联表。
另外也可用
mosaic(formula, data=)
其中formula是标准的R表达式,data设定一个数据框或者表格。
shade=TRUE将根据拟合模型的皮尔逊残差值对图形上色。
legend=TRUE 将展示残差的图例。
图表解读:图3反映的2021年品种a相对b而言,品种a的v1值大的比例较b高,2020年,两品种v1值大小均衡;2020年v1值在N1条件下数值大的比例较N2高,2021年两氮水平平衡
参考资料:
plot(x, y = NULL, type = "p", xlim = NULL, ylim = NULL, log = "", main = NULL, sub = NULL, xlab = NULL, ylab = NULL, ann = par("ann"), axes = TRUE, frame.plot = axes, panel.first = NULL, panel.last = NULL, asp = NA, xgap.axis = NA, ygap.axis = NA, ...) x,y 用于横纵坐标作图的数据对象。 type 图类型(线条和点类型),使用格式type=" "。 type="p"显示为空心点。plot type="l"显示为线条。line type="b"显示为空心点和线条。both type="c"显示为无点和线条。 type="o"显示为空心点和线条,线穿过空心点。 type="s"/"S"显示为阶梯线。 type="h"显示为直方图样的垂直线。 type="n"显示为无点和无线条。 xlim/ylim 用于指定图的x轴和y轴的范围,使用格式:xlim=c(x1,x2), ylim=c(y1,y2)。 xlab/ylab 用于给图的x轴和y轴添加标签,使用格式:xlab="xlab",ylab="ylab"。 main 用于对plot添加主标题, main=" "。 sub 用于对plot添加副标题, sub=" "。 log 用于对x或者y值取log。log="x"/"y"/"xy"。 ann 使用T/F对plot中的标题,x轴标签,y轴标签是否显示进行定义。 axes 使用T/F对坐标轴是否显示进行定义。 frame.plot 使用T/F对画图外框是否显示进行定义。 panel.first 参数还没弄懂,panel.first="grid(8,8)"对背景线进行定义。 asp 表示y/x的纵横比。 lty 用于线条类型的定义,指定值为整数,lty="1"。 lty="0"显示为空白,即无线条。 lty="1"显示为实线线条。 lty="2"显示为虚线线条。 lty="3"显示为点状线条。 lty="4"显示为点虚线线条,点和虚线线条间隔。 lty="5"显示为长虚线。 lty="1"显示为双破折号线条。library(plotrix)
twoord.plot(lx,ly,rx,ry,data=NULL,main="",xlim=NULL,lylim=NULL,rylim=NULL,
mar=c(5,4,4,4),lcol=1,rcol=2,xlab="",lytickpos=NA,ylab="",ylab.at=NA,
rytickpos=NA,rylab="",rylab.at=NA,lpch=1,rpch=2,
type="b",xtickpos=NULL,xticklab=NULL,halfwidth=0.4,axislab.cex=1,
do.first=NULL,xaxt="s",...)
xval1 <- seq.Date(as.Date("2017-01-02"), as.Date("2017-01-10"), by="day")
xval2 <- seq.Date(as.Date("2017-01-01"), as.Date("2017-01-15"), by="day")
going_up<-seq(3,7,by=0.5)+rnorm(9)
going_down<-rev(60:74)+rnorm(15)
twoord.plot(2:10,going_up,1:15,going_down,xlab="Sequence",
ylab="Ascending values",rylab="Descending values",lcol=4,
main="Plot with two ordinates - points and lines",
do.first="plot_bg()grid(col=\"white\",lty=1)")
axis.Date(1,xval2)
library(ggplot2)
library(gtable)
library(grid)
grid.newpage()
# two plots
p1 <- ggplot(mtcars, aes(mpg, disp)) + geom_line(colour = "blue") + theme_bw()
p2 <- ggplot(mtcars, aes(mpg, drat)) + geom_line(colour = "red") + theme_bw() %+replace% theme(panel.background = element_rect(fill = NA))
# extract gtable
g1 <- ggplot_gtable(ggplot_build(p1))
g2 <- ggplot_gtable(ggplot_build(p2))
# overlap the panel of 2nd plot on that of 1st plot
pp <- c(subset(g1$layout, name == "panel", se = t:r))
g <- gtable_add_grob(g1, g2$grobs[[which(g2$layout$name == "panel")]], pp$t, pp$l, pp$b, pp$l)
# axis tweaks
ia <- which(g2$layout$name == "axis-l")
ga <- g2$grobs[[ia]]
ax <- ga$children[[2]]
ax$widths <- rev(ax$widths)
ax$grobs <- rev(ax$grobs)
ax$grobs[[1]]$x <- ax$grobs[[1]]$x - unit(1, "npc") + unit(0.15, "cm")
g <- gtable_add_cols(g, g2$widths[g2$layout[ia, ]$l], length(g$widths) - 1)
g <- gtable_add_grob(g, ax, pp$t, length(g$widths) - 1, pp$b)
# draw it
grid.draw(g)
用ggplot2画个双坐标也太难了吧。。。。
d <- data.frame(name=c("zhao","qian","sun","li"),weight=c(62,58,79,60),height=c(178,169,180,173))
x <- d$name
y1 <- d$weight
y2 <- d$height
bar <- barplot(y1,xlim=c(0,5),ylim=c(0,100),ylab="Weight",col="blue",col.axis="blue",col.lab="blue")
mtext(x,side=1,line=1,at=bar,col="black")
mtext("Name",side=1,line=3,col="black")
par(new=T) ## 创建新的画布,类似于ggplot2中的图层叠加
plot(bar,y2,axes=F,xlim=c(0,5),ylim=c(100,190),xlab="",ylab="",col="red",type="b")
axis(4,col="red",col.ticks="red",col.axis="red")
mtext("Heigth (cm)",side=4,line=3,col="red")
若画图时需要将纵坐标方向改变,可以采用取相反数的方法。正常情况下,y轴是从下往上依次增大,可以让所有数值乘以-1,使y轴从下往上依次减小,然后通过axis函数修改y轴的label。
R语言学习 绘制双坐标轴(双y轴)的方法 plotrix_瞎掰大数据_新浪博客
利用ggplot2画双坐标轴曲线