1. 笛卡尔坐标系
1.1 coord_cartesian()
有两个参数:xlim=c(),ylim=c()
scale_x_continuous()
也有类似的参数:limits=c()
两者的区别是:前者用所有的观测值画图,然后局部放大(这一点在有些局部放大的图形中有应用);后者是先根据limits取一部分值再画图
1.2 coord_equal(), coord_fixed()
x轴和y轴单位长度表示数据范围相同,也可以用ratio参数使其成比例
1.3 coord_flip()
图形样式不变,调换x轴和y轴
1.4 coord_trans()
coord_trans()的使用:“在标度变换的尺度上建模,然后再反演到变换前的图形以便于解释,这是常见的分析模型”
diamonds%>%ggplot(aes(x=carat,y=price))+geom_point()+geom_smooth(method = "lm")+scale_x_log10()+scale_y_log10()
last_plot()+coord_trans(x=exp_trans(10),y=exp_trans(10))
问题1:有没有什么方法(比如修改method =,formula =)来直接对x和y进行指数型的拟合
2. 非笛卡尔坐标系
2.1 深入理解极坐标系
p1 <- diamonds%>%ggplot(aes(x=factor(1),y=..count..,fill=cut))+geom_bar()+theme(legend.position = "none")#x=factor(1)的作用
p2 <- diamonds%>%ggplot(aes(x=factor(1),y=..count..,fill=cut))+geom_bar(width = 1)+coord_polar(theta = "x")+theme(legend.position = "none") #width = 1表示完整的一圈
p3 <- diamonds%>%ggplot(aes(x=factor(1),y=..count..,fill=cut))+geom_bar()+coord_polar(theta = "y")+theme(legend.position = "none")
library(gridExtra)
plist <- list(p1,p2,p3)
grid.arrange(grobs = plist, ncol = 3)
图2图3看成是图1的边向外侧“画圆周”形成的,theta决定哪个变量被映射为角度;1,3边画圆周得到图2;2,4边画圆周得到图3
2.2 极坐标系应用
牛眼图、饼图如上
玫瑰图
diamonds%>%ggplot(aes(x=cut,y=..count..,fill=cut))+geom_bar()
diamonds%>%ggplot(aes(x=cut,y=..count..,fill=cut))+geom_bar()+coord_polar(theta = "x")
雷达图
pd <- data.frame(
x=c(seq(1,9),seq(1,9)),
y=c(2,3,4,2,3,2,4,1,2,6,6,8,7,8,5,7,9,6),
z=c(rep(c("A","B"),each=9))
)
ggplot(pd,aes(x,y,color=z))+geom_point()+geom_line()+
coord_polar(theta = "x")
更专业的雷达图可以使用R包:
ggradar: Create radar charts using ggplot2