楼主: Metor·
4352 6

[问答] R语言ggplot图例合并问题 [推广有奖]

  • 0关注
  • 0粉丝

小学生

42%

还不是VIP/贵宾

-

威望
0
论坛币
20 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
69 点
帖子
4
精华
0
在线时间
9 小时
注册时间
2019-10-12
最后登录
2019-12-19

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
library(ggalt)
ggplot(data,aes(x=dis,y=per,group=name))+scale_x_continuous(limits=c(0,1), breaks=seq(0,1,0.05))+geom_xspline(spline_shape = 0.4,size=1,aes(linetype=ltype,colour = color))
出现的 线类型和颜色 两个图裂,我想合并两个,并以name为label


文件如下
"name" "dis" "per" "ltype" "color"
"491" "A" 0.98 0 "longdash" "#E41A1C"
"492" "B" 0.98 0 "longdash" "#377EB8"
"493" "C" 0.98 NA "longdash" "#4DAF4A"
"496" "A" 0.99 0 "longdash" "#E41A1C"
"497" "B" 0.99 0 "longdash" "#377EB8"
"498" "C" 0.99 NA "longdash" "#4DAF4A"
"4" "D" 0 0 "solid" "#984EA3"
"5" "E" 0 0 "solid" "#FF7F00"
"9" "D" 0.01 0 "solid" "#984EA3"
"10" "E" 0.01 0.2 "solid" "#FF7F00"
如附件
二维码

扫码加我 拉你入群

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

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

关键词:R语言

QQ图片20191012113115.png (74.9 KB)

QQ图片20191012113115.png

test.txt

18.3 KB

沙发
zhou1_20 发表于 2019-10-12 13:24:28 |只看作者 |坛友微信交流群
  1. library(tidyverse)

  2. #method 1
  3. mtcars%>%group_by(vs,gear) %>%
  4.   mutate(vs_gear=paste(c(vs[1],gear[1]),collapse = ','))%>%
  5.   ungroup()%>%
  6.   select(mpg,disp,vs_gear)%>%
  7.   mutate(vs_gear=as.factor(vs_gear))%>%
  8.   ggplot(aes(mpg,disp))+
  9.   geom_point(aes(colour=vs_gear, shape=vs_gear),size=7)

  10. #method 2
  11. mtcars%>%select(mpg,disp, vs, gear)%>%
  12.   mutate(vs=as.factor(vs),gear=as.factor(gear))%>%
  13.   ggplot(aes(mpg,disp))+
  14.   geom_point(aes(colour=interaction(vs,gear),
  15.                  shape=interaction(vs,gear)),size=7)+
  16.   labs(colour='vs_gear', shape='vs_gear')
复制代码
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
Sunknownay + 3 + 3 + 3 热心帮助其他会员

总评分: 学术水平 + 3  热心指数 + 3  信用等级 + 3   查看全部评分

使用道具

藤椅
Metor· 发表于 2019-10-14 00:31:48 |只看作者 |坛友微信交流群
zhou1_20 发表于 2019-10-12 13:24
谢谢你的回复 ,但是我的文件中线类型和颜色分组是不一样的。你的意思是吧颜色和线类型合并 无法解决我的问题。

使用道具

板凳
zhou1_20 发表于 2019-10-14 08:43:05 |只看作者 |坛友微信交流群
Metor· 发表于 2019-10-14 00:31
谢谢你的回复 ,但是我的文件中线类型和颜色分组是不一样的。你的意思是吧颜色和线类型合并 无法解决我的 ...
用第二种方法

使用道具

报纸
Metor· 发表于 2019-10-14 10:27:07 |只看作者 |坛友微信交流群
zhou1_20 发表于 2019-10-14 08:43
用第二种方法
抱歉 ,再次打扰您。我尝试了第二种方法,代码如下:
>data<-read.csv("test.txt",stringsAsFactors = F,sep = " ",check.names = F,header=T)
> head(data)
  name  dis per    ltype     com
1    A 0.00   0 longdash #E41A1C
2    B 0.00   0 longdash #377EB8
3    C 0.00   0 longdash #4DAF4A
6    A 0.01   0 longdash #E41A1C
7    B 0.01   0 longdash #377EB8
8    C 0.01   0 longdash #4DAF4A
> data%>%select(dis,per,ltype,com)%>%
+ mutate(ltype=as.factor(ltype),com=as.factor(com))%>%
+ ggplot(aes(dis,per))+
+ geom_line(aes(colour=interaction(ltype,com),linetype=interaction(ltype,com)))
所画如图 您的方法仍然是将类型与颜色合并! 谢谢您百忙之中 解答!

J6X435~IS96_E_O(SLY`E28.png (42.93 KB)

J6X435~IS96_E_O(SLY`E28.png

使用道具

地板
Metor· 发表于 2019-10-14 10:48:18 |只看作者 |坛友微信交流群
zhou1_20 发表于 2019-10-14 08:43
用第二种方法
抱歉 再次打扰您,
我尝试了第二种方法代码如下:
> data<-read.csv("test.txt",stringsAsFactors = F,sep = " ",check.names = F,header=T)
> head(data)
  name  dis per    ltype     com
1    A 0.00   0 longdash #E41A1C
2    B 0.00   0 longdash #377EB8
3    C 0.00   0 longdash #4DAF4A
6    A 0.01   0 longdash #E41A1C
7    B 0.01   0 longdash #377EB8
8    C 0.01   0 longdash #4DAF4A
> data%>%select(dis,per,ltype,com)%>%
+ mutate(ltype=as.factor(ltype),com=as.factor(com))%>%
+ ggplot(aes(dis,per))+
+ geom_line(aes(colour=interaction(ltype,com),linetype=interaction(ltype,com)))
结果如图。
类型和颜色并没有分开! 每个线都有特色的类型和颜色
感谢百忙之中的解答。谢谢!

J6X435~IS96_E_O(SLY`E28.png (42.93 KB)

J6X435~IS96_E_O(SLY`E28.png

使用道具

7
zhou1_20 发表于 2019-10-16 09:57:23 |只看作者 |坛友微信交流群
ggplot2不知到怎么实现,给你个基础命令版,你参考下把
  1. dat<-read.csv("test.txt",stringsAsFactors = F,sep = " ",check.names = F,header=T)

  2. attach(dat)

  3. plot(dis, per, type = 'n', xlab = 'dis', ylab = 'per')

  4. type = unique(ltype)
  5. cm = unique(com)

  6. for (i in 1:length(type)) {
  7.   for (j in 1:length(cm))
  8.     lines(dis[ltype==type[i]&com==cm[j]],
  9.           per[ltype==type[i]&com==cm[j]], lty=i, col=cm[j], lwd=2)
  10. }
  11. grid()
  12. legend('topright', c(type, cm), lty = c(1,2,NA,NA,NA,NA,NA),
  13.        pch = c(NA,NA,16,16,16,16,16),lwd=2,
  14.        col = c(1,1,cm))

  15. detach(dat)
复制代码

使用道具

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

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

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

GMT+8, 2024-5-21 14:51