q1, 首先要确定是barplot还是hist,如果是barplot的话,应该不存在breaks的问题,因为barplot的传入参数是个矩阵;
我假设你要画的是个hist,我偶遇过这个问题,我的理解是hist的breaks的值要能被范围整除才行;比如x=1:200,break=7的话,就只能画出4个柱来,但如果breaks=10就没问题;基本上是这样的,偶尔也有例外;比如break=5就不行....奇怪得很
最后,没办法的办法,就只能用barplot代替hist了,barplot肯定不会有这个问题,统计下hist参数中的分布情况,转换成矩阵,用barplot吧;
q2, 貌似一般都用一组因素把这些类别区分开,我用abcde,表示你的小学,中学...了,比如这样:
a=1:7b=8:10c=c(9,10,11)d=c(40,55)e=100:110f=factor(c(rep(1,sum(length(a),length(b),length(c))),rep(2,sum(length(d),length(e)))))#先用c()生成数组,在转换成factor,其实数组也ok的,不过plot()中两个数组和factor不一样
x=c(a,b,c,d,e)
plot(x~f)
q3, 就我所知不行;yes或no一定也要是能映射到x,y范围内的点才行;你是想表示分类结果吗?如果是的话,通常用颜色,或者在点旁边的text表示。
q4, 举个例子吧
x=-50:50y=x^2+x+1
z=10*abs(x)+1
plot(x,y,type='l')
lines(x,z,lty=3)
legend(c('type1','type2'), x=-20,y=2500, col=c('black','red'), lty=c(1,3))
legend的x和y是legend的左上角,匿名参数是类型名称,col,lty,pch 是对应的颜色,线类型,和点类型。
最后,我现在多用ggplot2,如果不抵触的话可以看看,和R的基础作图包思路不是很一样,但是图很清新的;
如果还有问题,建议把数据集data.frame粘贴几行上来,我也试试;
数据准备
函数:legend(location, title, legend, ....)
参数详解:
x和y:用于定位图例,也可用关键词"bottomright", "bottom", "bottomleft", "left", "topleft", "top", "topright", "right" 和 "center";当图例用关键词设置位置后,inset = 分数,可以设置其相对位置;
legend:指定图例标签,字符或表达式向量;
fill:用特定的颜色进行填充;
col:设置图例中出现的点或线的颜色;
border:当fill = 参数存在的情况下,用于指定填充的边框颜色;
lty, lwd:图例中线的类型与宽度;
pch:点的类型;
angle:阴影的角度;
density:阴影线的密度;
cex:指定图例显示大小;
bg:指定图例的背景色;
bty:指定图例框是否画出,默认o为画出,n为不画出;
box.lty, box.lwd, box.col: 设置图例边框线型,线粗,颜色,box.lty为虚线,box.lwd决定粗线,box.col决定颜色;
pt.bg:图例中点的背景色;
pt.cex:图例中点的大小;
pt.lwd:图例中点边缘的线宽;
x.intersp:图例中文字离图片的水平距离;
y.intersp:图例中文字离图片的垂直距离;
adj:图例中字体的相对位置;
text.width:图例中字体所占的宽度,调整后图例整个宽度也跟着变化了;
text.col:图例字体的颜色;
text.font:图例字体;
merge:逻辑值,merge=TRUE,合并点与线,但不填充图例框,默认为TRUE;
trace:逻辑值,trace=TRUE显示图例信息;
plot:逻辑值,plot=FALSE不画出图例;
ncol:图例中分类的列数;
horiz:逻辑值,horiz=TRUE,水平放置图例;
title:给图例加标题;
xpd:xpd=FALSE,即不允许在作图区域外作图,改为TRUE即可,与par()参数配合使用;
title.col:标题颜色;
title.adj:图例标题的相对位置,0.5为默认,在中间。0最左,1为最右;
seg.len:指定图例中线的线长,长度单位为字符宽度。
1 图例方位
2 修饰图例
3 图例绘制在图外
4 自定义图例
有时候绘制出的图是分组图,这时候需要自定义绘制图例。
参考资料:
《R语言实战》(中文版),人民邮电出版社,2013.
R语言绘制图例(legend)的各种问题_详细综合解析, https://blog.csdn.net/xiangyong58/article/details/54579293
投必得R语言教程,第二讲 R作图-基础-图形参数设置:标题、图例、文字, https://mp.weixin.qq.com/s?__biz=MzU1Mzc3OTIwNg==&mid=2247495531&idx=1&sn=cdd80d4e950ae2b344cf188c68922fa8&chksm=fbef0602cc988f14e93b71bc6fcc2fda782d3ae9a3a67601a6c87756f4ae85bcc5d9c56d9b51&scene=21#wechat_redirect
一幅图解决R语言绘制图例的各种问题, https://blog.csdn.net/weixin_30469895/article/details/96649305
全局修改a<-c(1:10)
#全局修改
old_par<-par(no.readonly=TRUE) #记录默认样式到变量old_par中
par(lty=2,pch=17) #设置线型lty=2虚线,pch=17实心三角形,键值对的方式进行设置
#第一幅图,已经和默认样式不一样了
b<-rnorm(10)
plot(a,b,type='b')
#第二幅图,和第一幅图样式一样
b<-rnorm(10)
plot(a,b,type='b')
par(old_par) #应用默认样式
#第三幅图,默认样式
b<-rnorm(10)
plot(a,b,type='b')
针对一幅图片有效
a<-c(1:10)
b<-rnorm(10)
plot(a,b,type='b',lty=2,pch=17)
如下列表为可以设置的键值对
参数作用描述列表
pch点的符号指定绘制点时使用的符号
cex符号的大小指定符号的大小。cex是一个数值,表示绘图符号相对于默认
大小的缩放倍数。默认大小为1,1.5表示放大为默认值的1.5倍,
0.5表示缩小为默认值的50%,等等
lty线条类型
lwd线条宽度指定线条宽度。lwd是以默认值的相对大小来表示的(默认值为1)。
例如,lwd=2将生成一条两倍于默认宽度的线条
col 默认的绘图颜色。某些函数(如lines和pie)可以接受一个
含有颜色值的向量并自动循环使用。
例如,如果设定col=c(red, blue)并需要绘制三条线,则
第一条线将为红色,第二条线为蓝色,第三条线又将为红色
col.axis 坐标轴刻度文字的颜色
col.lab 坐标轴标签(名称)的颜色
col.main 标题颜色
col.sub 副标题颜色
fg 图形的前景色
bg 图形的背景色
cex 表示相对于默认大小缩放倍数的数值。
默认大小为1,1.5表示放大为默认值的1.5倍,0.5表示缩小
为默认值的50%,等等
cex.axis 坐标轴刻度文字的缩放倍数。类似于cex
cex.lab 坐标轴标签(名称)的缩放倍数。类似于cex
cex.main 标题的缩放倍数。类似于cex
cex.sub 副标题的缩放倍数。类似于cex
font 整数。用于指定绘图使用的字体样式。1=常规,2=粗体,3=斜体,
4=粗斜体,5=符号字体(以Adobe符号编码表示)
font.axis 坐标轴刻度文字的字体样式
font.lab 坐标轴标签(名称)的字体样式
font.main 标题的字体样式
font.sub 副标题的字体样式
ps 字体磅值(1磅约为1/72英寸)。文本的最终大小为 ps*cex
family 绘制文本时使用的字体族。标准的取值为serif(衬线)、sans(无衬线)和mono(等宽)
pin 以英寸表示的图形尺寸(宽和高)
mai 以数值向量表示的边界大小,顺序为“下、左、上、右”,单位为英寸
mar 以数值向量表示的边界大小,顺序为“下、左、上、右”,单位为英分*。
默认值为c(5, 4, 4, 2) + 0.1
标题title
坐标轴axis
参考线abline
图例legend
文本标注text(绘图区域内部添加文字),mtext(图形四个边界添加文字)