楼主: luzaijiaoxia06
6453 4

[问答] 关于ggplot2双坐标作图求教大师 [推广有奖]

  • 0关注
  • 1粉丝

大专生

0%

还不是VIP/贵宾

-

威望
0
论坛币
66 个
通用积分
5.7149
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1325 点
帖子
20
精华
0
在线时间
51 小时
注册时间
2015-6-15
最后登录
2023-10-23

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
我已按网上查到的方法做出了双坐标图,但仍有两个问题不知如何解决:1. 右边y轴与图片分离,如何调整?
2. 我已将背景和网格线去除,为何图中还有白线呢?

我所用代码:
library(ggplot2)
library(gtable)
library(grid)

PLSM<-read.csv("PLSM.csv")
PLSM$mon<-factor(as.integer(rownames(PLSM)),labels=PLSM$mon) ## 设置x轴顺序

# two plots
p1 <- ggplot(PLSM, aes(x=mon))
p1 <- p1 + geom_bar( aes(y=pre),stat="identity" , width = 0.5, fill = "cornflowerblue", colour="black")   ##  图层,柱大小.颜色
p1<-  p1 + geom_line(aes(x=mon,y=lea,group=treat,colour=treat)) + geom_point(aes(x=mon,y=lea,group=treat,colour=treat,shap=treat))+ theme_bw()+theme(panel.grid.major=element_line(colour=NA))

p2 <- ggplot(PLSM, aes(x=mon,y=sm, group=treat,colour=treat)) + geom_point() +geom_line() +theme_bw() %+replace%(theme(panel.background = element_rect(fill = NA))+theme(panel.grid.major=element_line(colour=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)


fig1.jpg
数据见附件
PLSM.xlsx (9.99 KB)
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:ggplot2 gplot plot 双坐标 GPL

沙发
luzaijiaoxia06 学生认证  发表于 2017-3-31 10:17:04 |只看作者 |坛友微信交流群
第二个问题已解决,将p2改写为p2 <- ggplot(PLSM, aes(x=mon,y=sm, group=treat,colour=treat)) + geom_point() +geom_line() +theme_bw() %+replace%(theme(panel.background = element_blank())+theme(panel.grid.major=element_blank())+theme(panel.grid.minor=element_blank()))
即添加theme(panel.grid.minor=element_blank()),作用是将次网格线去掉。

第一个问题还请高手帮忙解决!

使用道具

藤椅
LXBXP 发表于 2017-6-6 11:17:35 |只看作者 |坛友微信交流群
luzaijiaoxia06 发表于 2017-3-31 10:17
第二个问题已解决,将p2改写为p2
请问第一个问题解决了吗

使用道具

板凳
luzaijiaoxia06 学生认证  发表于 2017-12-13 16:31:46 |只看作者 |坛友微信交流群
LXBXP 发表于 2017-6-6 11:17
请问第一个问题解决了吗
抱歉,好久没来论坛了!问题已解决,用+theme(legend.position=c ( , ) 定义图例位置就可以

使用道具

报纸
听转转的话 发表于 2021-5-15 20:59:37 |只看作者 |坛友微信交流群
luzaijiaoxia06 发表于 2017-12-13 16:31
抱歉,好久没来论坛了!问题已解决,用+theme(legend.position=c ( , ) 定义图例位置就可以
很喜欢楼主这种负责的人,你的回复大大提高了我们的工作效率,向你表示敬意

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-24 19:52