ggplot2练习
图源于电力电子课本65页——电容滤波的单相不可控整流电路。
f<-function(w,d)
{
l<-w/sqrt(w^2+1)*exp(-atan(w)/w)*exp(-d/w)
r<-sin(d)
return(l-r)
}
w<-seq(0.01,60,0.01)
d<-rep(0,length(w))
s<-rep(0,length(w))
for(i in 1:length(w))
{
root<-uniroot(f,c(0,pi/2),w=w[i],tol=0.01)
d[i]<-root$root
s[i]<-pi-d[i]-atan(w[i])
} library(ggplot2)
DataSet1<-data.frame(w,value=d,lab=rep("d",length(w)))
DataSet2<-data.frame(w,value=s,lab=rep("s",length(w)))
DataSet <- rbind(DataSet1,DataSet2) p<-ggplot(data=DataSet,aes(w,value,color=lab))
p+geom_line()+
scale_colour_hue("value",breaks=c("d","s"),labels=c(expression(delta),expression(theta)))+
labs(x=(expression(omega*RC/rad)),y=expression(list(delta,theta)/rad))+
xlim(0,60)+ylim(0,pi)+
scale_x_continuous(expand = c(0,0))+
scale_y_continuous(breaks=round(c(0,pi/6,pi/3,pi/2,2*pi/3,5*pi/6,pi),digits=2),
labels=expression(0,pi/6,pi/3,pi/2,2*pi/3,5*pi/6,pi),expand = c(0, 0))

练习了:
- 自定义离散色彩标度;
- 修改坐标轴标签;
- 修改坐标范围;
- 修改显示刻度;
- expression数学表达式。
更新补充:图源于电力电子课本143页——单相交流调压电路。
AngleToRadian<-function(alpha)
{
return(alpha*pi/180)
}
RadianToAngle<-function(alpha)
{
return(alpha/pi*180)
}
f<-function(alpha,theta,varphi)
{
var1<-sin(alpha+theta-varphi)
if(varphi==0)
var2<-0
else
var2<-sin(alpha-varphi)*exp(-theta/tan(varphi))
return(var1-var2)
}
alpha<-seq(0,180-2,0.5)
varphi<-seq(0,90,15)
data<-data.frame() for(a in alpha)
{
for(v in varphi)
{
if(v<=a){
t=uniroot(f,c(1e-3,pi+1e-3),alpha=AngleToRadian(a),
varphi=AngleToRadian(v),tol=0.001)
result<-c(a,RadianToAngle(t$root),v)
data<-rbind(data,result)}
}
}
names(data)<-c("alpha","theta","varphi") data$I_VTN<-rep(0,dim(data)[1])
for(i in 1:dim(data)[1])
{
a<-AngleToRadian(data$alpha[i])
t<-AngleToRadian(data$theta[i])
if(data$varphi[i]==90)
v<-AngleToRadian(data$varphi[i]-1)
else
v<-AngleToRadian(data$varphi[i]) data$I_VTN[i]<-1/(2*sqrt(pi))*sqrt(t-sin(t)*cos(2*a+v+t)/cos(v))
}
library(ggplot2)
theme_set(theme_light())
ggplot(data=data,aes(alpha,theta,color=factor(varphi)))+
geom_line()+scale_colour_hue(expression(varphi/(degree)))+
labs(x=(expression(alpha/(degree))),y=expression(theta/(degree)))
ggplot(data=data,aes(alpha,I_VTN,color=factor(varphi)))+geom_line()+
geom_line()+scale_colour_hue(expression(varphi/(degree)))+
labs(x=(expression(alpha/(degree))),y=expression(I[VTN]))


ggplot2练习的更多相关文章
- 跟我一起ggplot2(1)
ggplot2 R的作图工具包,可以使用非常简单的语句实现非常复杂漂亮的效果. qplot 加载qplot library(ggplot2) # 测试数据集,ggplot2内置的钻石数据 qplot( ...
- R语言:ggplot2精细化绘图——以实用商业化图表绘图为例
本文版权归http://www.cnblogs.com/weibaar 本文旨在介绍R语言中ggplot2包的一些精细化操作,主要适用于对R画图有一定了解,需要更精细化作图的人,尤其是那些刚从exce ...
- ggplot2 多图排版
和R自带的绘图系统不同,ggplot2不能直接通过par(mfrow) 或者 layout()来排版多张图片.终于发现,其实可以通过一个『gridExtra』包来搞定: require(gridExt ...
- ggplot2 上篇
title: "ggplot2 上篇" author: "li_volleyball" date: "2016年4月16日" output: ...
- ggplot2包--R可视化
1.ggplot2发展历程 ggplot2是Hadley在爱荷华州立大学博士期间的作品,也是他博士论文的主题之一,实际上ggplot2还有个前身ggplot,但后来废弃了,某种程度上这也是Hadley ...
- ggplot2.multiplot:将多个图形使用GGPLOT2在同一页上
一页多图 介绍 ggplot2.multiplot是一个易于使用的功能,将多个图形在同一页面上使用R统计软件和GGPLOT2绘图方法.这个功能是从easyGgplot2包. 安装并加载easyGgpl ...
- ggplot2 legend图例的修改
ggplot2中的legend包括四个部分: legend.tittle, legend.text, legend.key, legend.backgroud.针对每一部分有四种处理方式: eleme ...
- Plotting means and error bars (ggplot2)
library(ggplot2) ############################################# # summarySE ######################### ...
- ggplot2 学习笔记 (持续更新.....)
1. 目前有四种主题 theme_gray(), theme_bw() , theme_minimal(),theme_classic() 2. X轴设置刻度 scale_x_continuous(l ...
- ggplot2 demo
title <- rep("A Really Rather Long Text Label", 25)value <- runif(25, 1,10)spacing & ...
随机推荐
- python使用geopandas和shapely处理shp文件
一.环境搭建 所需库:geopandas (以及前置库) doc:http://geopandas.org/ shapely(以及前置库) doc: 二.数据预处理 1.将shp文件进行切片 2. ...
- [洛谷P4720] [模板] 扩展卢卡斯
题目传送门 求组合数的时候,如果模数p是质数,可以用卢卡斯定理解决. 但是卢卡斯定理仅仅适用于p是质数的情况. 当p不是质数的时候,我们就需要用扩展卢卡斯求解. 实际上,扩展卢卡斯=快速幂+快速乘+e ...
- 国产ROM纷争升级 能否诞生终结者?
能否诞生终结者?" title="国产ROM纷争升级 能否诞生终结者?"> 相比iOS系统的低硬件高流畅,安卓系统就显得"逼格"低了许多.先不说 ...
- javaSE复习之——线程
线程其实就是程序执行的一条路径,一个进程中可以包含多条线程,多线程并发执行可以提高程序效率,可以同使完成多项任务 多线程的应用场景 迅雷多线程一起下载 服务器同时处理多个客户请求 多线程原理(单核CP ...
- iOS多线程开发之GCD(中级篇)
前文回顾: 上篇博客讲到GCD的实现是由队列和任务两部分组成,其中获取队列的方式有两种,第一种是通过GCD的API的dispatch_queue_create函数生成Dispatch Queue:第二 ...
- Elasticsearch,Filebeat,Kibana部署,添加图表及elastalert报警
服务端安装 Elasticsearch和Kibana(需要安装openjdk1.8以上) 安装方法:https://www.elastic.co以Ubuntu为例: wget -qO - https: ...
- DIY电压基准测万用表
| 分类 日志 | 手里有三个常用的手持表,UT61E四位半,优利德明星产品:福禄克F117C,换挡快,单手操作还带LoZ:UT210E小钳表能够通过修改EEPROM更改电表配置,已经刷了6000字 ...
- 整合 KAFKA+Flink 实例(第一部分,趟坑记录)
2017年后,一大波网络喧嚣,说流式处理如何牛叉,如何高大上,抱歉,工作满负荷,没空玩那个: 今年疫情隔离在家,无聊,开始学习 KAFKA+Flink ,目前的打算是用爬虫抓取网页数据,传递到Kafk ...
- 成长日记(2) Java面向对象
本篇主要是记录自己在学习路上的笔记,如果有哪里记错了请大家直接指出 面向对象的概念 *人为抽象的一种编程模型 *面向过程 代码集中 难以维护 *类:对事物 算法 逻辑 概念等的抽象 理解成 模板 图纸 ...
- 50-Python2和3字符编码的区别
目录 Python2和3字符编码的区别 python2 python3 Python2和3字符编码的区别 区别点 python2 python3 print 是一个语法结构 是一个函数,print(' ...