在R ggplot2做函数图像函数的语法错误问题,怎么解决

R|ggplot2(一)|一个完整的绘图流程有问题,上知乎。知乎作为中文互联网最大的知识分享平台,以「知识连接一切」为愿景,致力于构建一个人人都可以便捷接入的知识分享网络,让人们便捷地与世界分享知识、经验和见解,发现更大的世界。这一块内容包括如下几个部分首先简单画一个图出来做一些等价调整接受另一种类型的数据简单的参数调整纵坐标使用百分比表示更改横纵轴坐标、标题等在图中增加标注的文字调整字体、背景等,达成excel的效果保存图形首先简单画一个图出来# 我们拿到这样的数据
name &- c("多","中","少","中","少")
data &- data.frame(name) # 转化为数据框
library(ggplot2)
# 简单地画出一个图
ggplot(data,aes(x=name)) + geom_bar()
从上面我们知道如下信息ggplot2作图需要在ggplot函数中输入数据框,在aes中指定用哪一列,aes先知道这么用就可以,我们会在讲分组作图的部分中详细解释使用数据框中的列时,不需要使用$引用,直接使用列名就可以(只有放aes中才可以)柱状图需要知道每根柱子有多高,即需要知道每类的频数,这里函数内部会帮我们计算前面ggplot函数指定使用的数据,使用+来连接其他函数,geom_类函数表示作图类型,geom_bar是做柱状图的函数,如果要做点图就 + geom_point(),当然,点图的话ggplot函数中需要加入两个参数x和y# 画点图代码如下,读者可以自己运行
data1 &- data.frame(a=1:3,b=3:1)
ggplot(data1,aes(a, b)) + geom_point()
下面我们做一点微调指定哪一列的aes()放在ggplot函数还是geom_bar函数中无所谓先做好的部分可以赋值保存,再去加其他内容下面几种作图等价ggplot(data,aes(x=name)) + geom_bar()
ggplot(data) + geom_bar(aes(x=name))
p &- ggplot(data,aes(x=name))
p + geom_bar()
接受另一种类型的数据我们画柱状图是使用的数据一般有两种一种是像上面那种,所有内容列出来,函数内部自己数每一类有几个一种是 名字-频数 对应形式当我们得到的是 名字-频数 形式的数据,也可以作图data1 &- data.frame(table(name)) # 将数据转化为 名字-频数 形式
ggplot(data1,aes(x=name,y=Freq)) + geom_bar(stat="identity") # 和上图相同
上面我们发现以下信息aes()中接受了两个参数,分别代表 名字-频数geom_bar函数中加了一个参数stat="identity",表示不要像之前一样去查数,而是就使用数据Freq本身作为频数简单的参数调整上面的图片中,我们发现简单的代码就能画出比较高大上的图形。仔细观察这张图片。会发现函数默认设置了灰色背景、深灰色柱子、白色网格线、去掉图片边框等,正是这些默认的设置,让ggplot2包的简单代码作图远胜于基础函数作图。不过如果你对这些设置还不满意,这些都是可以调整的,下面图形没有巨大改变,就不放图片了,读者可以自行尝试p &-ggplot(data,aes(x=name))
p + geom_bar(col="red") # 调整柱子边框颜色为红色(注意这里col不是柱子颜色)
p + geom_bar(fill="red") # 调整柱子颜色为红色(fill才是柱子内部颜色)
p + geom_bar(width=0.5) # 调整柱子宽度,1时两个柱子挨在一起,0.5则宽度是1时的一半
纵坐标使用百分比表示下面用两种方法实现library(dplyr) # ggplot2 包常常和dplyr包一起使用
data1 &- data.frame(table(name))
data2 &- data1 %&% mutate(f=Freq/sum(Freq))
# 使用scales包中很方便的方法
ggplot(data2,aes(name,f)) + geom_bar(stat="identity") +
scale_y_continuous(labels = scales::percent)
# 另外一种实现方法
ggplot(data2,aes(name,f)) + geom_bar(stat="identity") +
scale_y_continuous(breaks=seq(0,0.4,len=5),
labels=paste(seq(0,0.4,len=5)*100,"%"))
这里使用的 scale_y_continuous 函数表示当y轴是连续数值时,调整其标度。如上面代码所示,第一种是使用scales包中的特殊表示方法;如果是常规使用方法,应该是下面这种表示方式。breaks表示在轴上哪些点的位置标标签,labels表示标什么标签。如果想让坐标轴表示0-0.5的范围也只要用 limits 参数调整即可ggplot(data2,aes(name,f)) + geom_bar(stat="identity") +
scale_y_continuous(breaks=seq(0,0.4,len=5),
labels=paste(seq(0,0.4,len=5)*100,"%"),
limits = c(0,0.5))
更改横纵轴坐标、标题等p1 &- ggplot(data,aes(x=name)) + geom_bar(width=0.7)
p1 + xlab("种类") + ylab("") +
ggtitle("运动情况")
所以更改 横纵轴坐标、标题 都是通过 + 特定的函数来实现的,而不可以在原有函数中增加参数来实现。在图中增加标注的文字p2 &- ggplot(data,aes(x=name)) +
geom_bar(width=0.7,fill=rgb(50,163,221,maxColorValue=255)) +
xlab("种类") + ylab("") + ggtitle("运动情况")
(p3 &- p2 + geom_text(stat="count",
label=paste(table(name)/sum(table(name))*100,'%',sep=''),
colour = "black", vjust=-0.5, size=4.7))
增加标注文字使用geom_text函数,参数label表示标什么,后面参数调整颜色、位置和大小。调整字体、背景等,达成excel的效果这里调整也要使用函数,还涉及到ggplot2包中使用比较麻烦的一块——theme设置ggplot2中默认使用的主题是灰色背景、白色网格、无边框,同时,它还定义了一些特殊的主题,只要通过+连接就可以使用p3 + theme_bw()
从图中我们可以看到,theme_bw()是白色背景、灰色网格、有边框。除此之外,还有很多其他主题,读者可以在rstudio中打出 theme 就会自动弹出选项补全函数。具体看各个主题长什么样可以看我们可以使用这种现成的主题,也可以自行定制,或者修改当前主题mytheme &- theme_bw() +
theme(plot.title=element_text(size=rel(2),hjust=0.5),
axis.title=element_text(size=rel(1.5)),
axis.text=element_text(size=rel(1.5)),
panel.grid.major=element_line(color="white"),
panel.grid.minor=element_line(color="white"),
panel.border=element_rect(color="white"),
axis.line=element_line(color="gray",size=1))
p3 + mytheme
这样自己定义好的主题,就可以应用到其他各种图形中下面解释一下theme函数中的参数。这里应该说有两层参数,一层是plot.title等theme函数的参数,第二层是size等element_函数参数,这就是theme设置复杂的原因。参数的作用都可以根据名字顾名思义了plot.title 调整标题文字,size 和 hjust参数则调整大小和位置(此处居中)后面调整轴名、标注名、网格线、坐标轴显示情况等内容theme的问题我们之后会专门讲述,这里只是想让读者知道,这些设置都要在theme中调整,而不要以R中基础绘图的思路,想直接在geom_bar函数中使用参数设置。保存图形ggplot2包中有专门的保存函数ggsaveggsave("1.png", dpi=300) # 默认保存最近的作图
ggsave("1.png", dpi=300, plot=p3) # 自己指定保存的图片
到这里,我们讲述了一个简单柱状图绘制的基本流程。当然,很多时候没有必要调整那么多参数,直接使用默认的图形就已经非常令人满意了,作图保存两行代码就搞定。这里讲这么多是为了能应对更多需求,完善自己的知识体系。可能会有读者觉得ggplot2包中的函数繁多而心生畏惧,因此在这里提醒一下,ggplot2包中函数主要分为以下几类element_
主题设置中的参数,调整细节
主要作图函数,区分作图类型,比如是柱状图还是点图
scale_ 修改默认颜色等设置
在一定程度上和geom_可以互换(文中 接受另一种类型的数据 部分有涉及)
theme_ 主题设置
coord_ 坐标轴转换
facet_分面作图,分组作图,放在不同页面上
我们这篇文章中除了最后两点都涉及到了,最后两点使用也非常简单,而且不是特殊需求也用不到。ggplot2包中函数之间分工明确,相同前缀的函数属于同一个族,具有相似的功能及用法。可以说,当你知道什么需求又什么函数控制时,你就已经掌握了这个包。这篇文章已经初步涉猎到了这些函数的主要功能,我们将涉及到所有类型的函数,让读者对这些函数族有更清晰的认识。专栏信息专栏主页:专栏目录:文末彩蛋这里讲一下各种赋值符号的区别,R语言中赋值符号有如下几种:= &- -& &&-它们的区别有一下几点&- 是R语言中对变量赋值的符号,这和其他语言使用=不同=是函数中对参数的赋值,不过用于变量赋值也可以,但是还是推荐用 &--& 是把前面内容赋值给后面参数的符号,为了代码规范,不推荐使用&&- 是改变作用域的赋值,在函数中使用,变量名在函数外面依然可以使用-&的使用a &- 1:4
a;b # 都可以实现赋值
=与&- 的区别m=1:4;m
n &- 1:4;n # 正常赋值没区别
f &- function(y,x) x+1
f(x=2) # 让参数x为2,正常返回3
f(x &- 2) # 报错
f &- function(y,x) x+1
f(0,2) # 3
f(0,aa &- 2) # 3
f(0,aa = 2) # 报错,没有这个参数aa
在函数中使用&- 的逻辑是,先赋值2给x,再让这个结果作为函数f的第一个参数,也就是让y是2,而函数要使用x进行计算,自然会报错&-与&&-的区别f1 &- function(x) (y&-x+1)
f2 &- function(x) (y&&-x+1)
y # Error: object 'y' not found
这说明在函数中使用&&-赋值,变量名可以函数外面被调用,这涉及到变量的作用空间问题,本专栏以后还会专门讲述不过如果调用函数时使用了赋值号,这个变量是可以再外部使用的,因为它相当于在外部赋值之后,再作为参数传输进去的f1(abcd &- 2)
f1(abc &&- 2)
x # Error: object 'x' not found
373 条评论分享收藏文章被以下专栏收录以专题形式总结R/Python/爬虫/数据挖掘方面内容。文章追求全而细,需要耗费较长时间来阅读与运行代码,但学完一个专题就可以精通这个领域。R语言全球资讯、实战案例、视频直播分享,欢迎投稿分享请教安装R ggplot2出错的问题_百度知道
请教安装R ggplot2出错的问题
我有更好的答案
如果因为网络的原因,不能上网,或者网络被公司的网管封了,那么会导致直接在R上无法安装ggplot2。可以采取下载下来安装ggplot2的包的方式。还有一种方式就是找另一台可以上网的机器,安装R,再安装ggplot2包。最后把下载下来的包从这台机器上copy到不能上网的机器上即可。R的包的目录是:C:\Users\用户名\Documents\R\win-library我因为公司的机器不能上网,安装包这个事情,弄了好几天,也没有查到相关的文档。我自己试了试,这样可以。贡献给大家。这种方法应该可以适用于其他的包。
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。随笔 - 182请教安装R ggplot2出错的问题_百度知道
请教安装R ggplot2出错的问题
我有更好的答案
出什么错误,讲清楚RStudio输入安装命令即可
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。请教安装R ggplot2出错的问题_百度知道
请教安装R ggplot2出错的问题
我有更好的答案
看是不是缺少java,然后反复重装,我经常遇到package装不上的毛病,显示临时文件出问题啥的,再来一遍就好了
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 没有 ggplot 这个函数 的文章

 

随机推荐