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,一经查实,立即删除!

相关文章

html5点击视频跳转,javascript – 播放后重定向html5视频

我有一个html 5视频,我删除了控制按钮并添加了一个js代码,以便用户在点击视频时播放视频.我需要做的是绑定一个额外的脚本,在播放视频后重定向页面而不重新加载页面.下面是我的js代码.function play(){var video document.getElementById(video);video.addEventListener(click…

setInterval

定义和用法: setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。 setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。由 setInterval() 返回的 ID 值可用作 clearInterval() 方法…

Android working with volley

http://www.cnblogs.com/a284628487/p/4073771.html转载于:https://www.cnblogs.com/soaringEveryday/articles/4320262.html

maya藤蔓插件_MAYA快速打造藤蔓生长的路径动画教程

第一页:MAYA快速打造藤蔓生长的路径动画教程第二页:MAYA快速打造藤蔓生长的路径动画教程第三页:MAYA快速打造藤蔓生长的路径动画教程我相信很多人大部分时间在学习高级技巧,诸如zb mud啦,GI FG啦,motionBui…

移动端拖拽排序 html,移动端拖拽排序

var drag {bindDragEvent: function (isF) {var father document.getElementById("public_theme_list");//父容器var btns father.getElementsByClassName("public-drag-btn");//事件源对象var items father.getElementsByClassName("item")…

pyqt5 qscrollarea到达_pyqt5 QScrollArea设置在自定义侧(任何位置)

本例设置为垂直左侧scroll主要思想是利用一个长度为0的mid_frame,高度为待设置qwidget的高度,用mid_frame的moveEvent事件驱动qwidget的move我项目的效果图:代码及注释from PyQt5.Qt import *from sys import argv# 主窗口class Main(QMainWi…

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

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

3月初的日记:网站工作记录

一直在备考。考一个关于自己本身工作的资格证。也一直在忙碌中,三个项目的并驾齐驱。 可以说,我也很忙。 东北今天下了很大雪,厚厚的,踩上去咯吱咯吱的响,这样的安逸更容易使得心静下来。 但是,其实我是焦虑…

电子科技大学研究生计算机与科学,2019年电子科技大学计算机科学与工程学院考研复试分数线...

据电子科技大学研究生院消息,2019年电子科技大学计算机科学与工程学院考研复试分数线及调剂信息已出,详情如下:专业第一单元第二单元第三单元第四单元总分调剂调剂开放时间调剂结束时间公开招考人数081200计算机科学与技术50458090340不接收2…

debian 重复执行sh_debian 脚本启动方式

同所有的Unix一样,Debian启动时要执行init程序.init的配置文件(/etc/inittab)中指定的第一个执行脚本应该是/etc/init.d/rcS.该脚本执行/etc/rcS.d/目录中各脚本的扩展名指定或衍生进程完成诸如检查并挂载文件系,装载内核模块,启动网络服务,设定时钟等系统初始化工作.接着,为了…

(None resource)-Binary system

Description 给定一个范围[a,b] (0<a<b<10^18) 求出该范围内二进制中1的个数最多的数&#xff0c;如果存在多个答案&#xff0c;输出最小的那个数 Input 输入数据有多组&#xff0c;每组数据输入两个整数a&#xff0c;b&#xff0c;表示区间[a, b]。 Output 输出该区…

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

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

java输出一副扑克牌_JAVA编一副扑克牌

匿名用户7级2011-05-03 回答public static void main(String [] args){List li new ArrayList();List li2 new ArrayList();List li3 new ArrayList();li.add("黑桃");li.add("红心");li.add("梅花");li.add("方片");for(int i 2 …

qpython能使用json吗l_Python pyjsonq包_程序模块 - PyPI - Python中文网

py jsonqpy jsonq是一个简单、优雅的python包&#xff0c;可以查询任何类型的json数据。通过在json上提供类似orm的查询&#xff0c;这将使您的生活更轻松。安装pip install pyjsonq用法只需在开始使用前导入软件包即可。作为python包&#xff1a;frompyjsonqimportJsonQ通过从…

虚拟跳线软件干什么用的_跳线的作用

跳线就是主板上的一个个小开关&#xff0c;(其它板卡上也有)&#xff0c;用来手动完成一些软件不能实现的操作&#xff0c;比如手动清空BIOS&#xff0c;超频等。如果主板上的跳线跳接得不正确&#xff0c;大多情况下都可能引起没有显示的故障。有些情况下&#xff0c;虽然也显…

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

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

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

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

python rpc webservice_关于RPC、HTTP、WebService的区别

关于 REST 介绍的文章已经很多了&#xff0c;这里只对 RPC 部分做一个介绍&#xff1a;RPC(远程过程调用)是什么简单的说&#xff0c;RPC就是从一台机器(客户端)上通过参数传递的方式调用另一台机器(服务器)上的一个函数或方法(可以统称为服务)并得到返回的结果。RPC 会隐藏底层…

python程序发布 ubuntu_将Windows项目发布到Ubuntu服务器详细教程(Windows编程,Ubuntu服务器做解释器)...

前期准备(1)专业版Pycharm(社区版没有deployment功能)&#xff0c;学生&#xff0c;教师可申请免费专业版&#xff0c;详情可看我的博客。(2)可通过SSH连接Ubuntu服务器&#xff0c;并且服务器安装了Python解释器。部署本地Pycharm项目到Ubuntu服务器1.点击Tools - Deployment …

nios 双核 烧录_nios程序烧写到epcs方法

折腾了好久&#xff0c;才把nios程序烧写到epcs的方法弄明白。开始先在网上搜了下&#xff0c;这方面资料很多&#xff0c;看了半天也没怎么弄明白&#xff0c;无奈&#xff0c;只好去找官方文档&#xff0c;看完后&#xff0c;只想说&#xff0c;官方文档确实给力。下面列出参…