草庐IT

3. 关于ggplot绘图公式复盘的一些问题2

心惊梦醒 2023-03-28 原文

  ggplot提供的几种重要几何图形函数geom_*如下:

  • geom_smooth对数据进行拟合并展示拟合的结果和标准误;这个函数的重要参数是method。当method=NULL时,基于observations的数量(数据点的个数)选择默认方法:当observations的数量小于1000时,默认geom_smooth(method="loess");否则默认geom_smooth(method="gam",formula=y ~ s(x, bs = "cs"))(ps:也可以写作geom_smooth(method="gam",formula = y ~ s(x))).geom_smooth(method = "lm")拟合线性模型;geom_smooth(method = "rlm")lm相似,但使用更稳健的拟合算法,因此异常值不会对拟合产生太大的影响。
  • geom_boxplot()绘制箱线图汇总点集的分布,适合绘制连续型变量在离散型变量上的分布。当仅用geom_point()时,可能很多点画在了相同的位置进而影响对信息的判断,有三种方法来缓解这个问题:1)geom_jitter()给数据加一个小的随机噪声将点抖动开,适合小数据集;2)geom_boxplot()用少量的统计数据汇总了分布的形状,即上限(上四分位数+1.5IQR)、上四分位数、中位数、下四分位数、下限(下四分位数-1.5IQR)、异常点(超过上限或低于下限的点),但只用五个数字就表示了一组数据的分布有时候显得信息不足;3)geom_violin()展示分布密度,突出发现最多点的区域,但依赖于密度估计的计算,有时候会很难解释。
  • geom_histogram()geom_freqpoly()展示单个连续数值变量的分布。与boxplot相比,提供了更多关于单个Group的分布信息,代价是需要更多的空间。两者的工作方式相同:先对数据划分bin,再计算每个bin中observations的数量,然后以bin为横坐标,计算的每个bin中的observations的数量为纵坐标绘制图形。两者唯一的差别是:展示方式不同:histogram用bars,freqpoly用lines。分bin的方式有两种:一种是用binwidth参数生成均匀间隔的bin,另一种是用breaks参数生成不均匀间隔的bin。当你困扰于总要尝试不同的值才能使自己的图形传达出想要的信息时,请记住这是正常且非常重要的,你必须这样做。替代geom_freqpoly()的另一个方式是geom_density(),但底层密度计算是复杂的,从而导致有时结果很难解释,它们总是假设数据是连续的、无界的、平滑的。
    这两个函数是针对单个连续数值变量进行统计,但仍然可以比较不同的subgroup,举例:ggplot(diamonds, aes(price, fill = cut)) + geom_histogram(binwidth = 500)ggplot(diamonds, aes(price, colour = cut)) + geom_freqpoly(binwidth = 500),即histogram设置aes的fill参数,freqpoly设置aes的color参数。另一种可选方案当然是分面啦。
  • geom_bar()展示离散型变量的分布geom_histogram是直方图,geom_bar()是柱状图,后者是前者的离散模拟,可以理解为后者是从前者“分bin”后开始计算绘图的。这里的离散型变量分两种情况:1)诸如ggplot(mpg, aes(manufacturer))+geom_bar()(等价于ggplot(mpg, aes(manufacturer))+geom_bar(stat="count"))中,manufacturer是一组离散型字符串,geom_bar()会先统计每个唯一值的数量然后绘图;2)如ggplot(drugs, aes(drug, effect)) + geom_bar(stat = "identity")中,drugs是
drugs <- data.frame(
  drug = c("a", "b", "c"),
  effect = c(4.2, 9.7, 6.1)
)

相信你已看到区别。总结下来就是:如果原始值是未经过统计的,设置stat="count",这样函数会自动计算并绘图;如果原始值是已经统计好的,设置stat="identity"直接绘图。

  • geom_histogram()默认stat="bin",即对连续型变量先分bin,再计算每个bin中的count;geom_bar()默认stat="count",即对离散型变量直接count;geom_bar(stat="identity")适用于你实现做好了count,直接绘图即可。
  • 一般情况下,geom_histogram()出的图柱子之间是紧挨着的,如果想分离,可结合scale_binned()函数设置,geom_histogram()函数的帮助文档中有示例。
  • geom_freqpoly()geom_line()的关系和geom_hisogram()geom_bar()的关系很类似。

有关3. 关于ggplot绘图公式复盘的一些问题2的更多相关文章

  1. ruby - 在 64 位 Snow Leopard 上使用 rvm、postgres 9.0、ruby 1.9.2-p136 安装 pg gem 时出现问题 - 2

    我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po

  2. ruby - 通过 rvm 升级 ruby​​gems 的问题 - 2

    尝试通过RVM将RubyGems升级到版本1.8.10并出现此错误:$rvmrubygemslatestRemovingoldRubygemsfiles...Installingrubygems-1.8.10forruby-1.9.2-p180...ERROR:Errorrunning'GEM_PATH="/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/ruby-1.9.2-p180@global:/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/rub

  3. ruby - 通过 RVM (OSX Mountain Lion) 安装 Ruby 2.0.0-p247 时遇到问题 - 2

    我的最终目标是安装当前版本的RubyonRails。我在OSXMountainLion上运行。到目前为止,这是我的过程:已安装的RVM$\curl-Lhttps://get.rvm.io|bash-sstable检查已知(我假设已批准)安装$rvmlistknown我看到当前的稳定版本可用[ruby-]2.0.0[-p247]输入命令安装$rvminstall2.0.0-p247注意:我也试过这些安装命令$rvminstallruby-2.0.0-p247$rvminstallruby=2.0.0-p247我很快就无处可去了。结果:$rvminstall2.0.0-p247Search

  4. ruby - Fast-stemmer 安装问题 - 2

    由于fast-stemmer的问题,我很难安装我想要的任何ruby​​gem。我把我得到的错误放在下面。Buildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingfast-stemmer:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcreatingMakefilemake"DESTDIR="cleanmake"DESTDIR=

  5. ruby - 安装 Ruby 时遇到问题(无法下载资源 "readline--patch") - 2

    当我尝试安装Ruby时遇到此错误。我试过查看this和this但无济于事➜~brewinstallrubyWarning:YouareusingOSX10.12.Wedonotprovidesupportforthispre-releaseversion.Youmayencounterbuildfailuresorotherbreakages.Pleasecreatepull-requestsinsteadoffilingissues.==>Installingdependenciesforruby:readline,libyaml,makedepend==>Installingrub

  6. java - 从 JRuby 调用 Java 类的问题 - 2

    我正在尝试使用boilerpipe来自JRuby。我看过guide从JRuby调用Java,并成功地将它与另一个Java包一起使用,但无法弄清楚为什么同样的东西不能用于boilerpipe。我正在尝试基本上从JRuby中执行与此Java等效的操作:URLurl=newURL("http://www.example.com/some-location/index.html");Stringtext=ArticleExtractor.INSTANCE.getText(url);在JRuby中试过这个:require'java'url=java.net.URL.new("http://www

  7. ruby-on-rails - 简单的 Ruby on Rails 问题——如何将评论附加到用户和文章? - 2

    我意识到这可能是一个非常基本的问题,但我现在已经花了几天时间回过头来解决这个问题,但出于某种原因,Google就是没有帮助我。(我认为部分问题在于我是一个初学者,我不知道该问什么......)我也看过O'Reilly的RubyCookbook和RailsAPI,但我仍然停留在这个问题上.我找到了一些关于多态关系的信息,但它似乎不是我需要的(尽管如果我错了请告诉我)。我正在尝试调整MichaelHartl'stutorial创建一个包含用户、文章和评论的博客应用程序(不使用脚手架)。我希望评论既属于用户又属于文章。我的主要问题是:我不知道如何将当前文章的ID放入评论Controller。

  8. ruby-on-rails - 如何生成传递一些自定义参数的 `link_to` URL? - 2

    我正在使用RubyonRails3.0.9,我想生成一个传递一些自定义参数的link_toURL。也就是说,有一个articles_path(www.my_web_site_name.com/articles)我想生成如下内容:link_to'Samplelinktitle',...#HereIshouldimplementthecode#=>'http://www.my_web_site_name.com/articles?param1=value1¶m2=value2&...我如何编写link_to语句“alàRubyonRailsWay”以实现该目的?如果我想通过传递一些

  9. 【高数】用拉格朗日中值定理解决极限问题 - 2

    首先回顾一下拉格朗日定理的内容:函数f(x)是在闭区间[a,b]上连续、开区间(a,b)上可导的函数,那么至少存在一个,使得:通过这个表达式我们可以知道,f(x)是函数的主体,a和b可以看作是主体函数f(x)中所取的两个值。那么可以有,  也就意味着我们可以用来替换 这种替换可以用在求某些多项式差的极限中。方法: 外层函数f(x)是一致的,并且h(x)和g(x)是等价无穷小。此时,利用拉格朗日定理,将原式替换为 ,再进行求解,往往会省去复合函数求极限的很多麻烦。使用要注意:1.要先找到主体函数f(x),即外层函数必须相同。2.f(x)找到后,复合部分是等价无穷小。3.要满足作差的形式。如果是加

  10. 基于C#实现简易绘图工具【100010177】 - 2

    C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.

随机推荐