绘制简单条形图/SCI论文/科研/研究生/生信分析热点思路

绘制条形图最普通的画法是直接用系统自带函数barplot(),下方示例我们加载的是R的自带包iris,图中展示的是不同宽度花萼鸢尾花的频数分布。
attach(iris)
table(iris$Sepal.Length)
table(iris$Sepal.Width)
table(iris$Species)
barplot(table(iris$Sepal.Width))

但有时我们希望得到水平条形图,还记得上次我们说的颜色函数rainbow吗?做一个彩色的水平柱状图吧。参数horiz是控制柱状图方向的函数,记得不要把横纵坐标名字设置错了。
n<-length(table (iris$Sepal.Width))
barplot(table(iris$Sepal.Width),
xlab='count',ylab='Sepal.Width',
horiz = TRUE,col = rainbow(n))

绘制柱状图的方法有多种,几乎每种绘图工具都有绘制柱状图的功能,掌握好一两种就够。我们不需要同时掌握过多相同功能是的工具,而应但把目光放在实现更多功能上。比如柱状图有一种升级版本叫做帕累托图,很多人就没做过。
x<-sort(table(iris$Sepal.Width),decreasing = T)
color=RColorBrewer::brewer.pal(23,'Set3')
#按照频数多少对数据排序
par(mai=c(0.7,0.7,0.2,0.7),cex=0.7)
bar<-barplot(x,xlab = 'Sepal.Width',
ylab ='count',col = color,
ylim = c(0,30))
text(bar,x,labels=x,pos=3,col='black')
y<-cumsum(x)/sum(x)
par(new=T)
plot(y,type = 'b',pch=15,axes = F,
xlab = '',ylab = '',main = '')
axis(side = 4)
mtext('Cumulative frequency',
side = 4,line = 3,cex = 0.8)
text(labels='Cumulative distribution curve',
x=10,y=0.92,cex=1.3)
首先我们给各个宽度的花萼按照数量进行排序得到x
然后就是用颜色函数快速提取23种颜色,为什么我会知道是23种呢?用length数一下就知道了。
还需要用par函数控制一下图片右侧的留白,因为我们要加新的坐标轴,默认的设置不够坐标轴加标签。
然后就可以用barplot作图了
text可以给barplot出的图加标签
cumsum这个函数有的人可能没见过,就是计算每组频数的累加,试一下就知道了我们用有来制作曲线
par(new=T)就是在原来的图片上继续画图,plot大家应该都会
axis可以多加一条刻度,就是最右边的那条,mtext给刻度加标签
随后我们再次用到了text,根据实际情况调一下位置就好

