绘制散点图(scatterplots)使用geom_point()函数,气泡图(bubblechart)也是一个散点图,只不过点的大小由一个变量(size)来控制。散点图潜在的最大问题是过度绘图:当一个位置或相邻的位置上出现有多个点,就可能把点绘制在彼此之上, 这会严重扭曲散点图的视觉外观,你可以通过使点变得透明(geom_point(alpha = 0.05))或者设置点的形状(geom_point(shape = "."))来帮助解决该问题。

geom_point(mapping = NULL, data = NULL, stat = "identity",
position = "identity", ..., na.rm = FALSE, show.legend = NA,
inherit.aes = TRUE)

参数注释:

  • stat:统计转换(statistical transformation),默认值是identity,表明变量的值是就是统计的值;而统计函数count 需要对变量的值进行计数,统计值是计数的结果。
  • position:位置调整(Position adjustment),默认值是identity,不调整
  • mapping:映射参数

点的位置调整(Position adjustment)有多种方式:

  • identity:不调整
  • dodge:垂直方向不调整,只调整水平位置
  • nudge:在一定的范围内调整水平和垂直位置
  • jitter:抖动,当具有离散位置和相对较少的点数时,抖动很有用
  • jitterdodge:同时jitter和 dodge
  • stack:堆叠,
  • fill:填充,用于条形图

每个位置调整都对应一个函数position_xxx()。

使用aes()函数来设置映射参数,geom_point()函数可以使用的映射有:

  • x
  • y
  • alpha:设置点重叠部分的透明度
  • colour:点的颜色
  • fill:点的填充色
  • group:分组
  • shape:点形状
  • size:点的大小
  • stroke:描边

这些参数用于修改散点图的图形属性。

一,绘制基本的点图

使用mtcars数据集来绘制散点图,并根据cyl字段来设置每个点的颜色:

library(ggplo2)

ggplot(mtcars, aes(wt, mpg))+
geom_point(aes(colour = factor(cyl)))

二,绘制气泡图

使用geom_point(),绘制气泡图,并添加水平线:

library(ggplot2)

#win.graph(width=, height=,pointsize=)

df <- data.frame(year=rep(c(,),),
product=rep(c('ProductA','ProductB','ProductC'),),
ratio=runif(, min = , max = )) df <- df[order(df$year),]
df <- within(df,{bubblesize<- sqrt(df$ratio*/pi)})
df$product <- factor(df$product,levels=unique(df$product),ordered=TRUE)
ratio.mean <- mean(df$ratio)
y.min <- min(df$ratio) mytheme <- theme_minimal()+
theme(
panel.grid.major.y=element_blank(),
panel.grid.minor.y=element_blank(),
axis.text.x = element_text(angle = , hjust = ),
plot.title=element_text(hjust =0.5),
axis.line.y=element_line(linetype=,color='grey'),
axis.line.x=element_line(linetype=,color='grey'),
axis.ticks = element_line(linetype=,color='grey'),
panel.grid=element_line(linetype=,color='grey'),
legend.background = element_rect(fill="gray90", size=,color='white'),
legend.text=element_text(face="bold",size=),
legend.title=element_text(face="bold",size=),
axis.text=element_text(face="bold",size=)
) ggplot(data=df, mapping=aes(x=product,y=ratio,color=factor(year)))+
geom_point(stat= "identity",aes(size=bubblesize),alpha=0.7,show.legend = TRUE)+
guides(color=guide_legend(title="Year"))+
scale_size(range = c(, ),guide=FALSE)+
scale_color_manual(values=c("#666666","#FF0016"))+
scale_y_continuous(labels = scales::percent,limits=c(y.min,))+
labs(x='Product',y='Increase ratio',title='Product increase ratio')+
geom_text(aes(y=ratio,label=scales::percent(ratio),hjust=0.5), size=,color="black",position = position_dodge(width=0.00),check_overlap = FALSE) +
mytheme+
geom_hline(yintercept = ratio.mean,linetype='dashed')+
annotate(geom='text',x=,y=ratio.mean,label=scales::percent(ratio.mean),hjust=-0.4,vjust=-0.5);

其中,scale_size()图层用于指定bubble的大小,annotate()函数用于为水平线添加文本说明:

参考文档:

ggplot2 geom_point

Creating and Tweaking Bubble Chart with ggplot2

R绘图 第九篇:绘制散点图和气泡图(ggplot2)的更多相关文章

  1. Python使用Plotly绘图工具,绘制散点图、线形图

    今天在研究Plotly绘制散点图的方法 使用Python3.6 + Plotly Plotly版本2.0.0 在开始之前先说说,还需要安装库Numpy,安装方法在我的另一篇博客中有写到:https:/ ...

  2. R实战 第九篇:数据标准化

    数据标准化处理是数据分析的一项基础工作,不同评价指标往往具有不同的量纲,数据之间的差别可能很大,不进行处理会影响到数据分析的结果.为了消除指标之间的量纲和取值范围差异对数据分析结果的影响,需要对数据进 ...

  3. python 绘图---2D、3D散点图、折线图、曲面图

    python中绘制2D曲线图需要使用到Matplotlib,Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形,通过 Matplo ...

  4. R绘图 第十二篇:散点图(高级)

    散点图用于描述两个连续性变量间的关系,三个变量之间的关系可以通过3D图形或气泡来展示,多个变量之间的两两关系可以通过散点图矩阵来展示. 一,添加了最佳拟合曲线的散点图 使用基础函数plot(x,y)来 ...

  5. R绘图 第六篇:绘制线图(ggplot2)

    线图是由折线构成的图形,线图是把散点从左向右用直线连接起来而构成的图形,在以时间序列为x轴的线图中,可以看到数据增长的趋势. geom_line(mapping = NULL, data = NULL ...

  6. R语言绘图:在地图上绘制散点图

    使用ggplot2在地图上绘制散点图 ######*****绘制散点图代码*****####### options(baidumap.key = '**************') #设置密钥 bei ...

  7. R绘图 第四篇:绘制箱图(ggplot2)

    箱线图通过绘制观测数据的五数总括,即最小值.下四分位数.中位数.上四分位数以及最大值,描述了变量值的分布情况.箱线图能够显示出离群点(outlier),离群点也叫做异常值,通过箱线图能够很容易识别出数 ...

  8. R绘图(1): 在散点图边缘加上直方图/密度图/箱型图

    当我们在绘制散点图的时候,可能会遇到点特别多的情况,这时点与点之间过度重合,影响我们对图的认知.为了更好地反映特征,我们可以加上点的密度信息,比如在原来散点所在的位置将密度用热图的形式呈现出来,再比如 ...

  9. 【带着canvas去流浪(4)】绘制散点图

    目录 一. 任务说明 二. 重点提示 三. 示例代码 四.散点hover交互效果的实现 4.1 基本算法 4.2 参考代码 4.3 Demo中的小问题 示例代码托管在:http://www.githu ...

随机推荐

  1. LeetCode题解之 Sum of Left Leaves

    1.题目描述 2.问题分析 对于每个节点,如果其左子节点是叶子,则加上它的值,如果不是,递归,再对右子节点递归即可. 3.代码 int sumOfLeftLeaves(TreeNode* root) ...

  2. 域名检索&路由算法

    域名查询顺序: a. 浏览器缓存(本机hosts文件),浏览器会缓存DNS记录一段时间. b. 系统缓存 c. 路由器缓存 d. 检查ISP e. 递归搜索域名服务器 路由算法: 一.静态路由算法 a ...

  3. Azure 实例元数据服务

    Azure 实例元数据服务提供有关可用于管理和配置虚拟机的正在运行的虚拟机实例的信息. 这包括 SKU.网络配置和即将发生的维护事件等信息. 若要详细了解可用信息类型,请参阅元数据类别. Azure ...

  4. VS2010/2013 运行是很卡的加速方案

    前段时间为了一个项目而把VS2008换成了VS2010,结果原本就不堪重负的本本跑起VS2010来那更是慢得没话说,于是看了遍VS2010选项,又从网上到处找资料找优化方法,总算使我的VS2010跑得 ...

  5. 解决web网站被挂马清除方法

    案例:某公司一个lamp的服务器网站站点目录下所有文件均被植入了广告脚本如下内容: <script language=javascriptsrc=http://%4%66E%78%72%67%2 ...

  6. Django之FBV&CBV

    CBV与FBV是django视图中处理请求的两种方式 FBV FBV也就是function base views,字面意思函数基础视图,使用函数的方式处理请求url分发中添加的参数为视图处理函数名, ...

  7. 用apiDoc简化接口开发

    身为程序员最讨厌看到的代码没有注释,自己的代码却讨厌写注释,觉得麻烦,接口也是这样. 比如公司要做一个H5活动的页面,开发文档已经发到后端开发.设计.与前端的邮箱了,其实这个时候就可以开始开发了.开发 ...

  8. 乘风破浪:LeetCode真题_039_Combination Sum

    乘风破浪:LeetCode真题_039_Combination Sum 一.前言     这一道题又是集合上面的问题,可以重复使用数字,来求得几个数之和等于目标. 二.Combination Sum ...

  9. hyper-v NAT网络

    宿主机:windows 2008 R2 企业版 hyper-V配置静态IP地址 https://jingyan.baidu.com/article/925f8cb8ae1ee2c0dde05632.h ...

  10. redis 配置文件示例

    # redis 配置文件示例 # 当你需要为某个配置项指定内存大小的时候,必须要带上单位,# 通常的格式就是 1k 5gb 4m 等酱紫:## 1k  => 1000 bytes# 1kb =& ...