使用格式:hist(x,breaks=n,main="name",labels=FASLE,col="blue",border="red",freq=TRUE)
x 向量,直方图的数据
breaks 描直方图的断点,例如breaks=20表示画出20个柱子;
labels 逻辑变量,TRUE标出频数
main 标题
col 颜色
border外框颜色
freq 逻辑变量,TRUE为数据频数,默认为TRUE;FALSE则为密度
我们可以用lines画出数据的密度曲线
还可以画正态分布的密度曲线
使用格式 ggplot(data,aes(x=class))+geom_bar()
x 绘制的数据
或者 ggplot(data,aes(y=class))+geom_bar(),则类型分布在y轴
当想看在该因素中其他因素的情况,可以利用fill进行绘制,得出叠堆条形图
横向的柱状
大多数时候我们想比较多个组直接某些因素的情况,例如有时候我们要画几个样本中各个细胞比例的情况
这是我们可以画堆叠条形图
此时不好比较,我们可以把同类型细胞放在一块比较,即横坐标变为细胞类型
在实验过程中可以采用容易分析的形式进行比较
以上是基本绘制的参数,此外还有美化的一些参数
labs 横纵坐标轴的名称
ggttitle 标题名称
geom_bar(width= )设置条形大小,默认情况下,设置为数据分辨率的90%。
theme_bw() 改变背景颜色
scale_fill_manual 自定义颜色
更多参数见 R语言绘图——数据可视化ggplot2 介绍和主要的参数
R 有几种用于制作图形的系统,但 ggplot2 是最优雅和最通用的系统之一。与大多数其他图形包不同,ggplot2 具有基于图形语法的底层语法,它允许您通过组合独立组件来组合图形。如果想要更加了解ggplot2,请阅读 ggplot2: Elegant Graphics for Data Analysis ,可以从 https://ggplot2-book.org/getting-started.html 学习本书
所有的图都由数据data,想要可视化的信息,映射mapping(即数据变量如何映射到美学属性的描述)组成
1. 图层(layers) 是几何元素和统计变换的集合。几何对象,简称 geoms ,代表你在图中实际看到的东西:点、线、多边形等等。 统计转换,简称 stats ,总结数据:例如,装箱和计数观察,以创建一个直方图,或拟合一个线性模型。
2. Scales 将数据空间中的值映射到美学空间中的值。这包括颜色、形状和大小的使用。Scale还绘制图例和轴,这使得从图中读取原始数据值成为可能(反向映射)。
3. 坐标(coords) 或坐标系统描述如何将数据坐标映射到图形的平面。它还提供了轴和网格线来帮助读取图形。我们通常使用笛卡尔坐标系,但也可以使用其他一些坐标系,包括极坐标和地图投影。
4. 刻面(facet) 指定如何拆分数据子集并将其显示为小倍数。这也被称为条件反射或网格/格子。
5. theme 控制更精细的显示点,如字体大小和背景颜色。
ggplot2有许多参数,可根据需求自行选取,具体参数详情可见 https://ggplot2.tidyverse.org/reference/index.html
基础绘图:由 ggplot(data,aes(x,y))+geom_ 开始,至少包含这三个组件,可以通过"+"不断的添加layers, scales, coords和facets。
Geoms :几何对象,通常,您将使用geom_函数创建层,以下为常用的图形:
geom_bar() :直方图,条形图
geom_boxplot() :box图
geom_density() :平滑密度估计曲线
geom_dotplot() :点图
geom_point() :点图
geom_violin() :小提琴图
aes(),颜色、大小、形状和其他审美属性
要向绘图添加其他变量,我们可以使用其他美学,如颜色、形状和大小。
按照属性定义
它们的工作方式与 x 和 y 相同,aes():
aes(displ, hwy, colour = class) #按照某个属性着色
aes(displ, hwy, shape = drv) #按照某个属性定义
aes(displ, hwy, size = cyl) #按照某个属性定义
整体自定义
geom_xxx(colour =自定义颜色)
geom_xxx(shape=形状编号)
geom_xxx(size =编号大小定义 0-10)
注意根据需求按照aes()还是geom进行添加属性
以下为R语言中各shape形状编号
scale控制如何将数据值转换为视觉属性的细节。
labs()和lims() 是对标签和限制进行最常见调整。
labs() ,主要对图形进行调整,注释等
labs()括号内参数:title主标题,subtitle副标题,caption右下角描述,tag左上角
xlab() ,x轴命名
ylab() ,y轴命名
ggtitle() ,标题
lims()
xlim() , xlim(a,b) 限制坐标(a,b)
ylim() , ylim(a,b) 限制坐标(a,b)
scale_alpha() 透明度尺度
scale_shape() , 搭配aes(shape=某个属性)使用
参数:name ,solid =T/F是否填充
scale_size()搭配aes(size=某个属性)使用
参数:name,range =c(0, 10)
1.适用于发散和定性的数据
a. scale_colour_brewer() ,scale_colour_brewer(palette =" "),scale_colour_brewer(palette ="Green ")
palette来自RcolorBrewer包,所有面板:
b. scale_colour_manual()
scale_colour_manual(values=c( )) 可以 自定义颜色 ,常用的参数
values可直接定义颜色,但是建议使用命名向量,例如
values=c("8" = "red", "4" = "blue", "6" = "darkgreen", "10" = "orange")
PS:注意在aes(colour=factor()),一定要把因素转换为factor型,否则无效
2.适用于连续的值,渐变颜色
a. scale_colour_gradient()
scale_colour_gradient (low =" ",high=" "),根据值大小定义颜色,创建两个颜色梯度(低-高),
b. scale_colour_gradient2()
scale_colour_gradient2(low = " ",mid = " ",high = " ")创建一个发散的颜色梯度(低-中-高)
c. scale_colour_gradientn()
创建一个n色渐变,scale_colour_gradientn(colours =许多R语言中的颜色面板),
默认坐标系是笛卡尔 coord_cartesian()
一般不会修改
facet_grid() ,在网格中布置面板
facet_grid(rows = vars() ) cols或rows = vars(因素),图形按列或行分割
facet_wrap()
facet_wrap(vars( ), ncol =n) , ncol或者nrow,分为多少行多少列
theme_bw() ,可以覆盖所有主题,背景变为白色,我们在文章中所用的图片大都需要该背景。
或者用 theme_classic() ,同时去除了网格线
theme() ,修改主题的组件,里面涉及多个参数,根据需求调整
常见参数:
legend.position,图例的位置,包括 "left" 左, "right" 右, "bottom" 下, "top" 上和"none",不显示
接着上一篇文章 R语言:表格的线图转化 继续练习,这次是直方图。
前段时间在视频课程学习过直方图案例,有一个citysales表格,表示3种产品,在5个城市的销量。
运用的是“barplot”命令,程序如下:
citysales<-read.csv("citysales.csv")
x<-barplot(as.matrix(citysales[,2:4]),beside=TRUE,
legend.text=citysales$City,args.legend=list(bty="n",horiz=TRUE),
col=brewer.pal(5,"Set1"),border="black",ylim=c(0,100))
自己用来练习的表格,还是上次那个。
因为这次想用案例中的色库,所以安装了“RColorBrewer”包。
然后按照案例中语句,写了一下。颜色参数有一点改动。
barplot(as.matrix(mydata[,2:3]),las=2,beside=TRUE,col=brewer.pal(2,"Set2"))
噫,为什么2006一列,2016一列?看回案例,barplot命令是根据列分组的,所以这里也根据了两个年份分组。
这样的图形不是我想要的,所以用 t命令 把mydata的行列互相置换了一下。
b<-as.matrix(mydata[,2:3]) c<-t(b)
barplot(c,las=2,beside=TRUE,col=brewer.pal(2,"Set2"))
这次出现的图形就对了,但是x轴的图标不对。区域名消失了。
很奇怪的是,如果整个mydata置换,就会把整个matrix都变成字符,barplot就不能只打印其中的两列,必须置换成数值
图形跟上图一样,就是没有x轴的数字了。
如果索性在excel表里手动置换行和列,也是可以的。
barplot(as.matrix(mydata2[,2:16]),las=2,beside=TRUE,col=brewer.pal(2,"Set2"),ylim=c(0,95000))
如果去掉“beside=TRUE”语句,则形成层叠图。再加上增长幅度曲线rate。但是因为增长幅度数值相对于几万的房价比较小,所以乘以5000倍才能看得见。
lines(mydata$rate*5000,col="gold")
这里又出现了一个缺点,涨幅曲线和柱状图差了一个,当然在excel表是完全对应的。还没有找出原因。望各位大神指教。
这次的练习:
1.条形图的转化
2.两种图形的叠加
3.RColorBrew包及相关命令
不明白/没做出来的地方
1.用barplot打印matrix的格式
2.matrix怎么加表头
3.Line和条形图的对应