d3js绘制y坐标轴_【ggplot2】 设置坐标轴

基本箱线图

library(ggplot2)

bp ggplot(PlantGrowth, aes(x=group, y=weight)) +

geom_boxplot()

bp

e0f2a8d3b5a2d26fc58ac53926716a7b.png

反转 x轴 与 y轴

bp + coord_flip()

560349916b5f768aa7de2f96db3b02d4.png

离散型数据的坐标轴

改变坐标轴中各项目的顺序 > 特别注意, 离散数据的坐标轴中数据做为 factor 变量处理,他的位置取决于 level的顺序

# 手动设置x轴的位置

bp + scale_x_discrete(limits=c("trt1","trt2","ctrl"))

e695bf3fd0e672cbb5825a1e50d08277.png

# 逆转顺序

# 得到 factor 变量的 level

flevels levels(PlantGrowth$group)

flevels

## [1] "ctrl" "trt1" "trt2"

# 逆转了 level 的顺序

flevels rev(flevels)

flevels

## [1] "trt2" "trt1" "ctrl"
bp + scale_x_discrete(limits=flevels)

98f1c0148fe7055b4732fead86df474f.png

# 或者写到一行里面

bp + scale_x_discrete(limits = rev(levels(PlantGrowth$group)))

98f1c0148fe7055b4732fead86df474f.png

scale_x_discrete 可以设置离散型(discrete)数据, 中间的 x 表示处理x轴,如果是 fill 则可以修改填充颜色, color 修改边框颜色, shape 修改形状……

设置坐标轴的标签

# 将原有的 "ctrl", "trt1", "trt2" 修改为 "Control", "Treat 1", "Treat 2"

bp + scale_x_discrete(breaks=c("ctrl", "trt1", "trt2"),

labels=c("Control", "Treat 1", "Treat 2"))

66208631ac79dd3281521dbcda299fc2.png

# 隐藏

bp + scale_x_discrete(breaks=NULL)

c8fc7a2d5eef95b008849d7b25f801c5.png

# 也可以这样通过设置 theme 实现

bp + theme(axis.ticks = element_blank(), axis.text.x = element_blank())

59859dca079c90b19c7a0a771e19c14a.png

连续型数据的坐标轴

设置坐标轴的范围和颠倒

# Make sure to include 0 in the y axis

bp + expand_limits(y=0) # y轴从0开始

bb0c83267d6a77e480d080eb5427ad9f.png

# 设置y轴的范围

bp + expand_limits(y=c(0,8))

dd698f326db9050947f984fd65794963.png

我们可以通过expand_limits设置坐标轴的范围, 但是如果 scale_y_continuous 被使用, 那么就会覆盖ylim的设置.

# 设置y轴的范围

bp + ylim(0, 8)

dd698f326db9050947f984fd65794963.png

# 同样可以这样

bp + scale_y_continuous(limits=c(0, 8))

dd698f326db9050947f984fd65794963.png

# 如果同时设置 scale_y_continuous 和 ylim那么ylim会被覆盖,首先执行scale_y_continuous

bp + scale_y_continuous(limits=c(0, 8))+

ylim(0,10)

## Scale for 'y' is already present. Adding another scale for 'y', which will replace the existing scale.

bcce9390c7fe44b329214a284d4de060.png

如果 y 的范围使用上面的方法被截取, 那么这个范围以外的数据会被忽略,原始数据中的数据同样会被忽略,比如设置了ylim(5,8),那么小于5和大于8的原始数据同样会被忽略,当然散点图没有问题,但是箱线图会出错.

为了避免这个问题可以使用coord_cartesian来设置范围.

可以看下面的例子, 第一个出错了, 第二个使用了coord_cartesian得到了正确的绘图.

# These two do the same thing; all data points outside the graphing range are

# dropped, resulting in a misleading box plot

bp + ylim(5, 7.5)

## Warning: Removed 13 rows containing non-finite values (stat_boxplot).

639b28901d26fbbbedfbe3ff7a621e46.png

# bp + scale_y_continuous(limits=c(5, 7.5))

# Using coord_cartesian "zooms" into the area

bp + coord_cartesian(ylim=c(5, 7.5))

a817bbf71f94c2f3b88582a539315ddc.png

# Specify tick marks directly

bp + coord_cartesian(ylim=c(5, 7.5)) +

scale_y_continuous(breaks=seq(0, 10, 0.25)) # Ticks from 0-10, every .25

c46655a6247854647ffb3f361d26bf04.png ### 点到坐标轴的方向

# Reverse order of a continuous-valued axis

bp + scale_y_reverse()

d5c8ba4eedd5acff5f04573672a0306f.png

设置和隐藏坐标轴的刻度

# Setting the tick marks on an axis

# 显示刻度从1到10,间隔为0.25

# The scale will show only the ones that are within range (3.50-6.25 in this case)

bp + scale_y_continuous(breaks=seq(1,10,1/4))

5d207798d7d2c162c6ee12c97055cce9.png

# 未设置刻度的地方会出现空白

bp + scale_y_continuous(breaks=c(4, 4.25, 4.5, 5, 6,8))

eb3f03aad66f3b4ecb43bbba4ffb01fe.png

# 隐藏刻度

bp + scale_y_continuous(breaks=NULL)

9ffdd5ecc2d406c580ee206be70ae399.png

# 隐藏刻度但是显示标签

bp + theme(axis.ticks = element_blank())

70cc352339ef13b2feda294ab9a7cdb7.png

坐标轴的数据转换(log, sqrt, etc.)

坐标轴可以进行线性变换,比如 log, power, roots 等等

这里有两种方式对数据进行转换, 一种是比例转换, 另一种是坐标转换. 对于比例变换, 在坐标轴刻度和范围被决定之前发生变换, 也就是先绘制图形,在标明刻度; 对于坐标变换, 在坐标轴刻度和范围被决定之后发生变换.也就是先标明刻度再绘制图形.

具体的理解可以看下面的例子.

# 指数分布的数据

set.seed(201)

n 100

dat data.frame(

xval = (1:n+rnorm(n,sd=5))/20,

yval = 2*2^((1:n+rnorm(n,sd=5))/20)

)

# 散点图

sp ggplot(dat, aes(xval, yval)) + geom_point()

sp

bcf2ac246e07c6f849591ff4839c6237.png

# log2 scaling of the y axis (with visually-equal spacing)

library(scales) # Need the scales package

##

## Attaching package: 'scales'

## The following objects are masked from 'package:readr':

##

## col_factor, col_numeric

# 比例变换 scale transformation

sp + scale_y_continuous(trans=log2_trans())

70d85099b07619b452876cb3f78456b3.png

# 坐标变换

sp + coord_trans(y="log2")

f5f7ec5404c0d4190962878656db6fc3.png

# 设置刻度和标签

sp + scale_y_continuous(trans = log2_trans(),

breaks = trans_breaks("log2", function(x) 2^x), # 这里很有意思,可以着重看一下帮助文档

labels = trans_format("log2", math_format(2^.x)))

3ee27916b825525c7b3005ce0c2114b6.png

这里还有很多其他的变换, 可以 ?trans_new 查看帮助

set.seed(205)

n 100

dat10 data.frame(

xval = (1:n+rnorm(n,sd=5))/20,

yval = 10*10^((1:n+rnorm(n,sd=5))/20)

)

sp10 ggplot(dat10, aes(xval, yval)) + geom_point()

# log10

sp10 + scale_y_log10()

0cf5441eb41da370c1c4776b5e53d196.png

# 根据 log10 设置 刻度

sp10 + scale_y_log10(breaks = trans_breaks("log10", function(x) 10^x),

labels = trans_format("log10", math_format(10^.x)))

fdbecace418d41c3e108a62ef0abe57d.png

Fixed ratio between x and y axes ### 修改 x 和 y 的比例

# Data where x ranges from 0-10, y ranges from 0-30

set.seed(202)

dat data.frame(

xval = runif(40,0,10),

yval = runif(40,0,30)

)

sp ggplot(dat, aes(xval, yval)) + geom_point()

# 设置为x:y = 1:1

sp + coord_fixed()

1f092582d75a40eda0055f4c62a88d53.png

# x:y = 1:3

sp + coord_fixed(ratio=1/3)

41323ec3aa3b499581354644becd6f7e.png

坐标轴标签的格式

设置和隐藏坐标标题

bp + theme(axis.title.x = element_blank()) + # Remove x-axis label

ylab("Weight (Kg)") # Set y-axis label

0b4690455745f484ca12037c04f84273.png

# 另一种方法

bp + scale_x_discrete(name="") +

scale_y_continuous(name="Weight (Kg)")

5b6f164dfe656db9649749a825f0fa01.png

改变字体和旋转 刻度标签

element_text 可以设置文本的格式

# Change font options:

# X-axis label: bold, red, and 20 points

# X-axis tick marks: rotate 90 degrees CCW, move to the left a bit (using vjust,

# since the labels are rotated), and 16 points

bp + theme(axis.title.x = element_text(face="bold", colour="#990000", size=20),

axis.text.x = element_text(angle=90,# 设置旋转的角度

vjust=0.5,# 设置纵向便宜距离 hjust为横向偏移距离

size=16) # 字体的大小

)

3f34f985e638d0245075b4068d162ba2.png

刻度标签的格式化

# Label formatters

library(scales) # Need the scales package

bp + scale_y_continuous(labels=percent) + # 显示百分比

scale_x_discrete(labels=abbreviate) #没有效果

4f698dd92049006c4c89db73b992990f.png

对于连续型数据的格式化包括 comma, percent, dollar 和科学计数法 对于离散型数据的格式化, abbreviate(缩略词) 将会去除元音和空格,对于日期可以使用 date_format

当然也可以创作自己的格式, 比如 HH:MM:SS 时间格式

# Self-defined formatting function for times.

timeHMS_formatter function(x) {

h floor(x/60)

m floor(x %% 60)

s round(60*(x %% 1)) # Round to nearest second

lab sprintf('%02d:%02d:%02d', h, m, s) # Format the strings as HH:MM:SS

lab gsub('^00:', '', lab) # Remove leading 00: if present

lab gsub('^0', '', lab) # Remove leading 0 if present

# 返回 lab

}

bp + scale_y_continuous(label=timeHMS_formatter)

c2f15d803595b4f451aacfdab2cce0df.png 

隐藏参考线

# 隐藏所有参考线(minor, major)

bp + theme(panel.grid.minor=element_blank(),

panel.grid.major=element_blank())

2be9c352ca1f13e26ede382069b09cf9.png

# 隐藏 minor

bp + theme(panel.grid.minor=element_blank())

39bf5825e1eb58a4786008018e7ed786.png 

根据坐标轴的方向隐藏

# 隐藏 纵向

bp + theme(panel.grid.minor.x=element_blank(),

panel.grid.major.x=element_blank())

84af63b6c090ce1e17cdb77caff226d9.png

# 隐藏 横向

bp + theme(panel.grid.minor.y=element_blank(),

panel.grid.major.y=element_blank())

5b08773ca4cebf4a9a442d8abd18cbd6.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/574805.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html页面判断是否登录,egg(103)--egg之定义公共的中间件判断用户是否登录以及去结算页面制作...

判断用户是否登录中间件app/middleware/userauth.jsmodule.exports (options, app) > {return async function init(ctx, next) {//判断前台用户是否登录 如果登录可以进入 ( 去结算 用户中心) 如果没有登录直接跳转到登录var userinfo ctx.service.cookies.get(userinfo)…

计算机应用的时间地点意义,计算机应用在教学中的作用

计算机应用在教学中的作用微课已成为当前我国教育信息化发展的重点和热点。在如今的数字化“微”时代,微课将成为一种新的教学模式和学习方式。下面是小编搜集整理的相关内容的论文,欢迎大家阅读参考。摘要:随着我国科技和技术的不断发展&…

启继承父位在什么时候_为什么少儿口才现在越来越受到家长们的重视

情商口才是个人素养、能力和智慧的一种综合反映,随着社会的发展,少年儿童的早期教育越来越受到家长的重视,特别是在培养孩子的语言表达能力中,更多的家长开始寻求各种方法来锻炼孩子的语言表达能力。源自于美国教育演说家卡耐基的…

x光肺部分割数据集_吴恩达发布了大型X光数据集,斯坦福AI诊断部分超越人类 | AAAI 2019...

数栗子 发自 凹非寺量子位 报道 | 公众号 QbitAI最近,吴恩达的斯坦福团队发布了一个叫做CheXpert的大型数据集,论文中选了AAAI 2019。它包含了224,316张标注好的胸部X光片,以及放射科医师为每张胸片写的病理报告。虽然,像从前NIH发…

【Qt之Quick模块】6. QML语法详解_1 基础语法与三种导入语句

前言 通过以上1-5文档的介绍,Quick与QML的概念及QML语法、类型、文件作用等已叙述个大概,接下来是对QML语法进行展开来说。 其实,学习任何一门语言或者做任何一件事情,并不用一开始就要求尽善尽美,做个无懈可击&…

datagrip将一个数据库中的数据_跨平台数据库管理神器DataGrip,用上就爱不释手...

原文链接:https://www.ffeeii.com/2041.htmlDataGrip是Jetbrains旗下众多优秀的效率生产工具之一。下载地址:https://www.jetbrains.com/datagrip/DataGrip是多引擎数据库环境,支持几乎常见的数据库类型:PostgreSQL、MySQL、Oracl…

idea下拉项目_推荐几款非常好用的IDEA插件(香)

每天进步一点点,坚持下去,你总是会不一样的。加油!最近在整理Java常用的一些基础、ZooKeeper、Spring全家桶、源码、Dubbo、Elasticsearch、Redis、MySql、RabbitMQ、Kafka、Linux 、微服务等技术栈。持续更新中,欢迎点上面后端架…

ora 00900 已编译但有错误_技术分享|万万没想到!编译错误竟然还没灭绝???

CodeWisdom-技术分享万万没想到!编译错误竟然还没灭绝???复旦大学CodeWisdom团队的代码分析和挖掘小组针对开源软件项目持续集成过程中出现的编译错误,进行了大规模的经验研究。该研究分析了常见的编译错误类型、修复代…

用计算机心如止水,计算机网络数据链路层

1、数据链路层使用的信道类型:点对点信道(1对1)广播信道(1对多),如:集线器、交换机2、链路与数据链路:链路:点对点的物理线路段,中间无任何其他交换结点数据链路:通信协议 软件 硬件(一般用适…

easyui tree动态加载_动态路由:Gin vs SpringMVC

这两天在接触Gin,对它的动态路由功能比较感兴趣,特意做了笔记,顺便跟SpringMVC作下对比。1.简介Gin是使用Go/golang语言实现的HTTP Web框架。接口简洁,性能极高。截止1.4.0版本,包含测试代码,仅14K,其中测试代码9K左右,也就是说框架源码仅5K左…

伍德里奇---计量经济学第6章部分计算机习题详解(stata),伍德里奇---计量经济学第6章部分计算机习题详解(STATA)...

所以,log bwg t7.5840.0180npvis?0.00041npvis20.0254mage?0.00041mage20.1370.00370.000120.0093 (0.00015)n1764,R20.0256,R20.0234。当孩子的出生体重最大时,对应的年龄为mage? β12β20.0254[2?0.00041] 30.96&#xff0c…

vue菜单点击html,基于vue.js实现侧边菜单栏

侧边菜单栏应该是很多项目里必不可少的 自己手写了一个下面是效果图下面就说一下实现的过程 还是比较简单的首先导入一下需要的文件接下来就是我的html主页系统用户管理权限设置操作日志设备运行日志防区 防区管理警报 历史报警曲线报表统计警情处理设备然后是css* {margin: 0;…

centos7 mysql启动失败_Mysql主从复制

​好在,别人如何分析我,跟我本身是一点关系也没有的。(by 三毛)主从复制的常见用途1.数据备份对备份来说,复制是一项很有意义的技术补充,但复制既不是备份也不能取代备份2.负载均衡(读写分离)通过MySQL主从复制,可以把写操作放在主库(master)&#xff0c…

计算机应用基础知道,谁知道计算机应用基础练习题的答案?

谁知道计算机应用基础练习题的答案?46.简述美籍匈牙利数学家冯诺依曼(Von Neumann)在1946年提出的关于计算机的体系结构和“程序存储”的设计思想。47.简要说明Windows98中安装存放在CD—ROM上的应用程序的操作过程。48.简述Windo…

计算机程序编辑器中文版,小说编辑器(Atomic Scribbler)

AtomicScribbler是一款功能强大的电脑小说编辑器,快速编辑、创作你的小说,也可以直接导入文本二次编辑,内置了丰富的文字编辑工具,完全能够满足日常创作小说、编辑文字使用需求。。相关软件软件大小版本说明下载地址AtomicScribbl…

信号与系统sa函数求积分_瞎扯数学分析微积分(1~4)

算法数学之美日期:2019年10月30日正文共:12013字0图预计阅读时间:31分钟来源:豆瓣 wxmang这一篇帖子主要介绍人类如何从一个基于几何直观或直觉的计算技巧或计算方法,进化到逻辑基础严密的公理体系的例子,想说明人类抽…

Cocos2D研究院之CCNode详解(三)

http://www.xuanyusong.com/archives/950 上一章我们了解了cocos2d的项目路径以及工作原理,这次作者要真刀真枪地讲解代码了,咱们先来看看cocos2d最常用、也是作者认为最核心的类——CCNode。 之前说过,cocos2d的所有类都以CC开头&#xff0c…

计算机第二课堂教学计划,小学的第二课堂教学计划

小学的第二课堂教学计划开展内容丰富,形式多样的第二课堂活动,通过活动,使学生受到爱国主义及道德情感教育,掌握技能,全面提高他们的素质,使其成为全面发展的一代新人。下面是小编分享给大家的小学的第二课…

webstorm两个文件比对_webstorm怎么更改文件名称?或者是重命名

在开发的过程中,我们一个项目中会有很多的文件,每个文件中也会有很多的层级关系,有时候新建一个文件的时候,一不下心就会出错,位置出错我们可以移动更换位置,名称命名错误,我们可以重命名&#…

秒懂物理计算机出题规划,57张动图, 让你秒懂高中物理原理! 考试次次拿第一

原标题:57张动图, 让你秒懂高中物理原理! 考试次次拿第一物理不像语文或者英语,文科的东西记的东西偏多,理解的成分偏少,但物理理解的成分很重,要死记硬背的东西反而很少。要想把物理学好,先要把简单的概念…