zzanswer的博客


  • 首页

  • 分类

  • 归档

  • 标签

  • 关于

ggplot2工具箱

发表于 2016-04-12   |   分类于 R语言   |  

简介

本文列举了ggplot2中大量几何对象和统计变换的一部分,并把它们按照用途进行了细分。

图层叠加的总体策略

总体来说,图层有三种用途:

  1. 用以展示数据本身。这一层不必多说,几乎在每一幅图形上都会出现。
  2. 用以展示数据的统计摘要。我们可以从数据摘要中进一步理解数据,同时对模型作出评价。本层通常绘制在数据层之上。
  3. 用以添加额外的元数据(metadata)、上下文信息和注解。元数据层展示了背景的上下文信息,也可以为原始数据赋予有现实意义的注解。
    阅读全文 »

抽象接口

发表于 2016-04-10   |   分类于 OOP   |  

背景

本文为《冒号课堂:编程范式与OOP思想》一书中第八课的思考与总结。

问题与解答

如何看待软件重用与软件应变之间的关系?

软件可重用性是建立在应变性的基础上的(类库和框架为例)。

你是如何理解开闭原则的?

开闭原则(open/closed principle,简称OCP),开指的是对扩展开放,闭指的是对修改封闭。

软件应该在模块的基础上进行扩展而不是修改,即严格遵循开闭原则的软件,不应该修改老代码,只能增加新代码。越是基础、越是核心的模块越应该遵循这一原则。

阅读全文 »

抽象封装

发表于 2016-04-09   |   分类于 OOP   |  

背景

本文为《冒号课堂:编程范式与OOP思想》一书中第七课的思考与总结。

问题与解答

抽象在软件开发中无处不在,你能总结一下吗?

抽象贯穿于软件开发的三个最核心的阶段中,分别是分析(analysis)、设计(design)和实现(implementation)。

其中,分析阶段的主要任务是在理解问题领域(problem domain)和明确业务需求(business requirement)的基础上制定功能规范(functional specification),其对应的是OOA(Object-Oriented Analysis)。设计阶段的主要任务是在分析的基础上制定出实现规范(implementation specification),其对应的是OOD(Object-Oriented Design)。实现阶段则在设计的基础上完成软件编码,其对应的是OOP(Object-Oriented Programming)。

在这三个阶段中,抽象的程度是依次递减的。分析阶段多采用性质导向式抽象(property-oriented abstraction),通过对系统性质的逻辑描述来制定规范。所谓性质导向的,即关注“是什么”(what)的问题而不是“怎么样”(how)的问题,因此一般不在设计上作任何决定或限制。设计阶段则多采用模型导向式抽象(model-oriented abstraction),通过构造数学模型来满足系统的性质,从而实现功能规范。实现阶段就是具体到实际编程了,常用两种抽象机制:一种是参数抽象(abstraction by parameterization),一种是规范抽象(abstraction by specification)。

阅读全文 »

ggplot2用图层构建图像

发表于 2016-04-06   |   分类于 R语言   |  

简介

本文主要对ggplot2中图层、几何对象、统计变换和位置调整的工作方式作一些技术说明:如何对它们进行调用和自定义。

创建绘图对象

当我们调用qplot()时,它已经帮我们做了这样一个流程:创建一个图形对象,添加图层并且展示结果。但如果我们想手动创建图形对象,就要用到ggplot()函数。该函数主要有两个参数:数据和图形属性的映射。其余全部参数可查看R帮助文档。举例:数据为diamonds,x为carat,y为price,colour为cut。

p <- ggplot(diamonds, aes(carat, price, colour = cut))

上面的代码就是创建一个图形对象,在加上图层之前是无法显示图形的。从这行代码可以看出图形对象可以存储到一个变量里,这有个好处就是有利于代码避繁就简。在文章后面会展示这一优点。

阅读全文 »

支持泛型和迭代的背包、队列和栈的链表实现

发表于 2016-03-29   |   分类于 数据结构与算法   |  

优点

链表的使用达到了最优设计的目标。

  • 它可以处理任意类型的数据;
  • 所需的空间总是和集合的大小成正比;
  • 操作所需的时间总是和集合的大小无关。
阅读全文 »

能够动态调整数组大小的下压栈 Java实现

发表于 2016-03-28   |   分类于 数据结构与算法   |  

背景

参考《算法 第四版》用Java实现一份泛型的可迭代的Stack API,这是所有集合类抽象数据类型实现的模板。它将所有元素保存在数组中,并动态调整数组的大小以保持数组大小和栈大小之比小于一个常数。

优缺点

优点

  • 每项操作的用时都与集合大小无关;
  • 空间需求总是不超过集合大小乘以一个常数。

缺点

缺点在于某些push()和pop()操作会调整数组的大小:这项操作的耗时和栈大小成正比。

阅读全文 »

ggplot2语法突破

发表于 2016-03-24   |   分类于 R语言   |  

简介

本文主要对ggplot2的语法和组成部件做一个总结,gglot2的理论基础是图形图层语法。图层语法定义的图由以下几部分组成:

  • 一个默认的数据集和一组从变量到图形属性的映射;
  • 一个或多个图层,每个都是由一种几何对象、一种统计变换和一种位置调整组成,另外数据集和图形属性映射也是可选的;
  • 标度,每个图形属性映射都对应一个标度;
  • 一个坐标系统;
  • 分面设定。

一句话来总结就是一个图形对象就是一个包含数据、映射、图层、标度、坐标和分面的列表。

阅读全文 »

Dijkstra的双栈算术表达式求值算法 Java实现

发表于 2016-03-23   |   分类于 数据结构与算法   |  

背景

《算法 第四版》中讲栈的时候提到了一个算法,用来完成初级算术运算符的操作,自己用Java实现了一下这个算法。

原理

为了方便的实现算法,略去其他的细节,假设表达式是由括号、运算符和操作数(数字)组成。根据以下四种情况从左到右逐个将这些实体送入栈处理:

* 将操作数压入操作数栈;
* 将运算符压入运算符栈;
* 忽略左括号;
* 在遇到右括号时,弹出一个运算符,弹出所需数量的操作数,并将运算符和操作数的运算结果压入操作数栈。
阅读全文 »

ggplot2-qplot()用法

发表于 2016-03-23   |   分类于 R语言   |  

简介

qplot()是ggplot2中的一个作图函数,意思是快速作图(quick plot),qplot()基于图形语法,使得我们可以用简单的、富有表达能力的语句来描述一张图形。下图是qplot()的一些知识概况:

阅读全文 »

文本挖掘—《三体》分词、词云展示

发表于 2016-03-19   |   分类于 R语言   |  

背景

在R语言中,对中文分词支持较好的包有两个,一个是RWordseg,一个是jiebaR,前者安装需要配置Java环境等繁琐操作,后者安装方便,感觉功能也更强大一些,本文就是用0.8版本的jiebaR进行分词等一系列操作,然后用wordcloud包来进行词云展示。

分词

加载package

library(jiebaRD)
library(jiebaR)
阅读全文 »
1…45
zzanswer

zzanswer

学而不思则罔,思而不学则殆

50 日志
8 分类
77 标签
github zhihu
© 2016 zzanswer
由 Hexo 强力驱动
主题 - NexT.Mist