R语言中ggplot的一些命令行总结

#前面的变成语言不是很规范,略看
#用ggplot作散点图

>qplot(carat,price,data=diamonds)#演示数据集diamonds,作散点图,carat为横坐标,prince为纵坐标
>qplot(log(carat),log(price),data=diamonds)#由散点图发现二者有关系,于是对数化
>qplot(carat,x*y*z,data=diamonds)#横纵坐标还可以写公式

dsmall=diamonds[sample(nrow(diamonds),100),]#由于diamonds数据过大,因而随机取100个数构成新数据集dsmall画图
>head(dsmall)#展示数据集前6行
>summary(dsmall)#显示每列数据的最小值、最大值、均值、中位数以及上下四分位数
>qplot(carat,price,data=dsmall,colour=color)#画出彩色散点图。color是原数据集中就有的变量
>qplot(carat,price,data=dsmall,shape=cut)#不同属性数据点的图标不同。其中cut也是原数据集中有的变量
#qplot还可使数据点半透明,取值从0到1,可便于观察不同地方的密度
>qplot(carat,price,data=diamonds,alpha=I(1/10))#变量为alpha
>qplot(carat,price,data=diamonds,alpha=I(1/100))#数越小颜色越淡
>qplot(carat,price,data=diamonds,alpha=I(1/200))

#ggplot中有一变量geom,通过定义它可以实现很多功能

#geom=“point”即散点图
#geom="smooth"即曲线图
#geom=“boxplot”即箱型图
#geom="path" & geoms="line"用于时间序列的分析

#geom="histogram"
#geom="freqpoly"
#geom="density"
#geom="bar"

>qplot(carat,price,data=dsmall,geom=c("point","smooth"))

>libary(splines)#R中一个回归模型的包

#———————————另一种命令行格式——————————

>ggplot(mtcars,aes(mpg,wt))#aes()括号中直接写入x,y轴,此行代码指定了横纵坐标(初始化图形并制定数据源和作图变量)
>ggplot(mtcars,aes(mpg,wt))+geom_point()#由于ggplot作图是基于图层叠加,所以可以直接上+

#最正规的ggplot2作图:

>ggplot(data,aes(x,y))+geom_xx()+annotate()+labs()+facet_grid()+...

#geom_xx()指定图形类型/annotate()文本注释函数/labs()标题函数,可以修改主标题和坐标标题/facet_grid()

#ggplot2是按图层叠加作图的,通过+号叠加,越到后面图层越高

#散点图

>ggplot(data,aes(x,y))+geom_point()

#线图(折线图)

>ggplot(data,aes(x,y))+geom_line()

#柱状图

>ggplot(data,aes(x))+geom_bar()

#查看数据类型

>table(dsmall$price)#table()可用于查看数据
>class(dsmall$price)#查看数据类型  如"numeric"为数值变量,"factor"为分类变量,"integer"为整型数
>ggplot(data,aes(factor(x))+geom_bar()#由此可修改变量类型

#此外,若想利用另一变量对柱状图进行划分,则可用如下代码:

>ggplot(data,aes(factor(x),fill=factor(y)))+geom_bar()#即在aes()里添加一个fill变量以分类变量y划分x,此时所得为堆积柱形图
>ggplot(db.g, aes(BMID, fra, fill=cond)) + geom_bar(stat = "identity")#指定y轴而非默认的count

#若想将堆积柱形图改为并排排列,则使用以下代码:

>ggplot(data,aes(factor(x),fill=factor(y))+geom_bar(position="dodge")#即在geom_bar()中添加position="dodge"

#直方图(查看变量分布情况)

>ggplot(data,aes(x))+geom_histogram()

#密度图(查看变量的频率分布情况)

>ggplot(data,aes(x))+geom_density()

#和fill相似,在aes()里添加一个color变量以分类变量y划分x,此时得到n条线(n为以y划分的类别),每条线颜色不同

>ggplot(data,aes(x,color=factor(y)))+geom_density()

#上述需注意,color是对点填色、线和图形的边缘进行颜色描绘,而fill是对图形内部进行填充
#此时上面的图挡住了下面的图,若要看下面的图可调整透明度

>ggplot(data,aes(x,color=factor(y)))+geom_density(alpha=0.4)

#即在geom_xx()中添加变量alpha,alpha取值范围为0~1

#箱线图(查看变量的统计值分布情况)

>ggplot(data,aes(分类变量x,y))+geom_boxplot()

#分组作图

>ggplot(mtcars,aes(wt,mpg,color=qsec))+geom_point()

#此处是以wt为横坐标,mpg为纵坐标的散点图。qsec为该数据库中另一属性值(且为连续数值变量(numeric)),上述代码将其作为染色标准,可通过颜色渐变来反映每个散点对应qsec值的大小。此处染色标准也可用分类变量,如下

>ggplot(mtcars,aes(wt,mpg,color=factor(vs)))+geom_point()

有一点值得注意:

>ggplot(mtcars,aes(wt,mpg))+geom_point(color="blue")#此时散点全为蓝色
>ggplot(mtcars,aes(wt,mpg,color="blue"))+geom_point()#此时散点并不是蓝色,而是一种系统默认粉红色

上述结果原因在于,aes()中的color为一变量,当"blue"不是数据集中的变量值时,color变量就无意义,此时color=“blue”、color=“green”、color="ai#$%@"结果是一样的。
综上,如果想统一整个图层的颜色,就将color写在geom_xx()里,如果想用颜色变化分组就写在aes()里

#分面作图

facet_grid()

##轴刻度一致的情况(每个分割图块的坐标相同)
###单变量作图

>ggplot(mtcars,aes(wt,mpg))+geom_point()+facet_grid(vs~.)#此处facet_grid(vs~.)表示以vs值对纵轴进行切分
>ggplot(mtcars,aes(wt,mpg))+geom_point()+facet_grid(.~vs)#此处facet_grid(.~vs)表示以vs值对横轴进行切分

###双变量作图

>ggplot(mtcars,aes(wt,mpg))+geom_point()+facet_grid(am~vs)#此处facet_grid(am~vs)表示以am、vs对横纵坐标进行切分,最终将图形切分为四个面

##轴刻度不一致【每个分割图块的坐标相互独立,可能不同】

>ggplot(mtcars,aes(wt,mpg))+geom_point()+facet_grid(vs~.,scale="free_y")

#即facet_grid()中加入scale=“free_y”【释放纵轴】,此时上下分割散点图的纵轴刻度不同

>ggplot(mtcars,aes(wt,mpg))+geom_point()+facet_grid(.~vs,scale="free_x")#同理释放横轴

有一更方便的方法,即scale=“free”,让程序自行判断:

>ggplot(mtcars,aes(wt,mpg))+geom_point()+facet_grid(.~vs,scale="free")
>ggplot(mtcars,aes(wt,mpg))+geom_point()+facet_grid(vs~.,scale="free")

#调整图形形状
##形状

geom_xxx(shape=x)#其中x=1,2,3,...,数值分别代表不同形状:
ggplot(mtcars,aes(wt,mpg,color=disp))+geom_point(shape=15)#15为方块,2为三角形,3为十字性,4为叉形,其他可自行探索~
geom_xxx(size=x)#size值表示大小,数值越大,尺寸越大
>ggplot(mtcars,aes(wt,mpg,color=disp))+geom_point(shape=3,size=7)

##颜色
color,fill上面已经提过

##文本注释

annnotate("text",x=,y=,label="")#text表示添加类型为文本,x=,y=表示在指定的坐标位置上放入文本,label表示填写的文本内容
labs(title="",x="",y="")#修改主标题、横纵轴名称
>ggplot(mtcars,aes(wt,mpg,color=factor(vs)))+geom_point()+annotate("text",x=4,y=20,label="elif")+labs(title="lalala",x="xxx",y="yyy")

##添加线条

geom_vline(xintercept=)#添加竖线
geom_hline(yintercept=)#添加水平线
>ggplot(mtcars,aes(wt,mpg,color=factor(vs)))+geom_point()+
  annotate("text",x=4,y=20,label="elif")+labs(title="lalala",x="xxx",y="yyy")+
  geom_vline(xintercept = 4)+geom_hline(yintercept = 22)

##转换x轴和y轴

coord_flip()#直接+加在代码后面即可
>ggplot(mtcars,aes(wt,mpg,color=factor(vs)))+geom_point()+
  annotate("text",x=4,y=20,label="elif")+labs(title="lalala",x="xxx",y="yyy")+
  geom_vline(xintercept = 4)+geom_hline(yintercept = 22)+coord_flip()

#调整轴刻度的范围

xlim(下限,上限)#X轴刻度范围
ylim(下限,上限)#Y轴刻度范围
>ggplot(mtcars,aes(wt,mpg,color=factor(vs)))+geom_point()+
  annotate("text",x=4,y=20,label="elif")+labs(title="lalala",x="xxx",y="yyy")+
  geom_vline(xintercept = 4)+geom_hline(yintercept = 22)+xlim(3,4)+ylim(15,25)

##修改坐标轴上的值

scale_x_continuous(breaks=c(),labels=c())#修改X轴值
scale_y_continuous(breaks=c(),labels=c())#修改y轴值
>ggplot(mtcars,aes(wt,mpg,color=factor(vs)))+geom_point()+
  annotate("text",x=4,y=20,label="elif")+labs(title="lalala",x="xxx",y="yyy")+
  geom_vline(xintercept = 4)+geom_hline(yintercept = 22)+
  scale_x_continuous(breaks = c(3,3.5,4,4.5),labels=c("a","b","c","d"))

#导入excel文件

> library(readxl)
> data1 <- read_excel("C:/Users/elifzeng.LAPTOP-8GE6C1NJ.000/Desktop/fighting/data1.xlsx")
> View(data1)
> d <- read.delim("C:/Users/elifzeng.LAPTOP-8GE6C1NJ.000/Desktop/fighting/R.txt")
> head(d)
> d <- read.table("C:/Users/elifzeng.LAPTOP-8GE6C1NJ.000/Desktop/fighting/R.txt", sep = "\t")#table和delim一样,但table后面要加 sep = "\t"以设置tap分隔
> head(d,3)#显示前三行

#导入txt数据

>db <- read.table("C:\\Users\\elifzeng.LAPTOP-8GE6C1NJ.000\\Desktop\\fighting\\R.txt",header=T)

#用tidyr包将数据转换为key-value格式

>library(tidyr)
trdb <- gather(db,key = "celltype",value = "count",-BMID)

或者

>db %>% gather(sample_label, fra, -1) %>% head()
db.g <- db %>% gather(sample_label, fra, -1)
  • 8
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值