源文件

 #!/usr/bin/env python

 from os import popen

 class gnuplot_leon:
# Author : Leon Email: yangli0534@gmail.com
# a gnuplot api of python def __init__(self):
self.gnuplot = popen('gnuplot','w')
self.write = self.gnuplot.write
self.flush = self.gnuplot.flush
self.close = self.gnuplot.close
#return gp def set_plot_size(self,x=0.85,y=0.85):
self.write(''.join(['set size ',str(x),' ,',str(y),'\n']))
#self.write(''.join(['set term png size ',str(x),' ',str(y),'\n']))
#self.flush() def set_canvas_size(self,x=600,y=400):
#self.write('set size 0.85, 0.85\n')
self.write(''.join(['set term png size ',str(x),' ',str(y),'\n'])) def set_title(self,title='gnuplot'):
self.write(''.join(['set title "{/Times:Italic ',str(title), '}"\n']))
self.write('set title font ",10" norotate tc rgb "white"\n') def set_gif(self):
self.write('set terminal gif animate\n') def set_png(self):
self.write('set terminal png\n') def set_file_name(self,filename='gnuplot.gif'):
self.write(''.join(['set output ', '"',str(filename) ,'"','\n'])) def set_tics_color(self,color='orange'):
self.write(''.join(['set tics textcolor rgb ','"',str(color),'"','\n'])) def set_border_color(self,color='orange'):
self.write(''.join(['set border lc rgb ','"',str(color),'"','\n'])) def set_grid_color(self,color='orange'):
self.write(''.join(['set grid lc rgb ','"',str(color),'"','\n'])) def set_bkgr_color(self,color='orange'):
self.write(''.join(['set object 1 rectangle from screen 0,0 to screen 1,1 fc rgb ','"',str(color),'"',' behind\n'])) def set_xlabel(self,text='x',color='white'):
self.write(''.join(['set xlabel " {/Times:Italic distance: ', str(text) ,' } " tc rgb ','"',str(color),'"',' \n'])) def set_ylabel(self,text='x',color='white'):
self.write(''.join(['set ylabel " {/Times:Italic distance: ', str(text) ,' } " tc rgb ','"',str(color),'"',' \n'])) def auto_scale_enable(self):
self.write('set autoscale\n') def set_key(self,onoff='off ',text='gnuplot',color='white'):
self.write('unset key\n')
self.write(''.join(['set key ',str(onoff),' title "',str(text),'" textcolor rgbcolor "',str(color),'"\n']))
#self.write('show key\n') def set_x_range(self,start,end):
self.write(''.join(['set xrange [ ',str(start),':',str(end),']\n'])) def set_y_range(self,start,end):
self.write(''.join(['set yrange [ ',str(start),':',str(end),']\n'])) def set_frame_start(self,linestype = 'l',linewidth=3,l_color='green,'):
#self.write('plot "-" w l lw 1.5 lc rgb "green"\n')
self.write(''.join(['plot "-" notitle w ',str(linestype),' lw ', str(linewidth), ' lc rgb ', '"', str(l_color),'" \n'])) def update_point(self,x,y):
self.write(''.join([str(x),' ',str(y),'\n'])) def set_frame_end(self):
self.write('e\n') def set_output_valid(self):
self.write('set output\n') def close(self):
self.close()

例'1

 #!/usr/bin/env python

 import sys
import math
import os
from gnuplot_leon import * # Author : Leon Email: yangli0534@gmail.com
# fdtd simulation , plotting with gnuplot, writting in python
# perl and gnuplot software packages should be installed before running this program
# 1d fdtd with absorbing boundary and TFSF boundary between [49] and [50]
# lossy dielectric material localted at > ez[150] gp = gnuplot_leon() gp.set_plot_size(1,1)
gp.set_canvas_size(600,800)
gp.set_title('fdtd simulation by leon : gnuplot class test')
title = 'fdtd simulation by leon,yangli0534\\\\@gmail.com'
#gp.write('set terminal gif animate\n')
gp.set_title(title)
#gp.set_gif()
gp.set_png()
gp.set_file_name('demo1.png')
gp.set_tics_color('white')
gp.set_border_color('orange')
gp.set_grid_color('orange')
gp.set_bkgr_color('gray10')
gp.set_xlabel('length','white')
gp.set_ylabel('amplitude','white')
gp.auto_scale_enable()
gp.set_key('off','sin(x)','white') size = 400#physical distance sinwave=size * [0.00]# cnt = 0
elem = 0.00000
pi = 3.14159265358979323846
#gp.write(''.join(['set xrange [0:',str(size),'-1]\n']));
gp.set_x_range(0,size-1)
#for i in range(0,size):
# sinwave[i] = 0.0 for mm in range(0, size-1):
sinwave[mm] = math.sin(2*pi*mm/size) gp.set_frame_start('l', 3, 'green')
cnt = 0
for elem in sinwave:
gp.update_point(cnt,elem)
#print ''.join([str(cnt),':',str(elem),'\n'])
cnt += 1
gp.set_frame_end()
gp.set_key('off','sin(x)','white')
gp.set_output_valid()
gp.close()

例2

 #!/usr/bin/env python

 import sys
import math
import os
from gnuplot_leon import * # Author : Leon Email: yangli0534@gmail.com
# fdtd simulation , plotting with gnuplot, writting in python
# perl and gnuplot software packages should be installed before running this program
# 1d fdtd with absorbing boundary and TFSF boundary between [49] and [50]
# lossy dielectric material localted at > ez[150] gp = gnuplot_leon() gp.set_plot_size(0.85,0.85)
gp.set_canvas_size(600,400)
#gp.set_title('fdtd simulation by leon : gnuplot class test')
title = 'fdtd simulation by leon,yangli0534\\\\@gmail.com' gp.set_title(title)
gp.set_gif()
#gp.set_png()
gp.set_file_name('demo2.gif')
gp.set_tics_color('white')
gp.set_border_color('orange')
gp.set_grid_color('orange')
gp.set_bkgr_color('gray10')
gp.set_xlabel('length','white')
gp.set_ylabel('amplitude','white')
gp.auto_scale_enable()
gp.set_key('off','sin(x)','white') size = 400#physical distance
ez=size * [0.00]#electric field
hy=size * [0.00]#magnetic field
ceze=size * [0.00]#
cezh=size * [0.00]#
chye=size * [0.00]#
chyh=size * [0.00]#
#sinwave=size * [0.00]#
imp0 = 377.00
LOSS = 0.01
LOSS_LAYER = 250
MaxTime = 18000
cnt = 0
elem = 0.00000 gp.set_x_range(0,size-1)
for i in range(0,size):
ez[i] = 0.0
hy[i] = 0.0
#sinwave[i] = 0.0
if (i < 100):
#$epsR[$i] = 1.0;
ceze[i] = 1.0
cezh[i] = imp0
elif(i < LOSS_LAYER):
#$epsR[$i] = 1.0;
ceze[i] = 1.0
cezh[i] = imp0/9.0
else :
#$epsR[$i] = 9.0;
ceze[i] = (1.0-LOSS)/(1.0+LOSS)
cezh[i] = imp0 / 9 /(1.0+LOSS)
if( i < LOSS_LAYER):
chye[i] = 1.0/imp0
chyh[i] = 1.0
else:
chye[i] = 1.0/imp0/(1.0+LOSS)
chyh[i] = (1.0-LOSS)/(1.0+LOSS)
for qTime in range(0, MaxTime):
# update magnetic field
for mm in range(0, size-1):
hy[mm] = hy[mm]*chyh[mm] + (ez[mm+1]-ez[mm])*chye[mm]
#sinwave[mm] = math.sin(mm/size*2*pi)
hy[49] = hy[49]-math.exp(-(qTime - 30.0)*(qTime - 30.0)/100.0)/imp0
# update electric field
ez[0] = ez[1]#abc
#$ez[$size-1] = $ez[$size-2];
for mm in range(1, size-1):
ez[mm] = ez[mm]*ceze[mm] + (hy[mm] - hy[mm-1])*cezh[mm]
if(qTime % 30 == 0):
gp.set_frame_start('l', 3, 'green')
cnt = 0
for elem in ez:
gp.update_point(cnt,elem)
cnt += 1
gp.set_frame_end()
ez[50] = ez[50]+math.exp(-(qTime +0.5-(-0.5)- 30.0)*(qTime +0.5-(-0.5)- 30.0)/100.0);
#gp.write('set output\n')
#gp.close()
gp.set_output_valid()
gp.close()

gnuplot Python API的更多相关文章

  1. Appium python API 总结

    Appium python api 根据testerhome的文章,再补充一些文章里面没有提及的API [TOC] [1]find element driver 的方法 注意:这几个方法只能通过sel ...

  2. The novaclient Python API

    The novaclient Python API Usage First create a client instance with your credentials: >>> f ...

  3. Openstack python api 学习文档 api创建虚拟机

    Openstack python api 学习文档 转载请注明http://www.cnblogs.com/juandx/p/4953191.html 因为需要学习使用api接口调用openstack ...

  4. BotVS开发基础—Python API

    代码 import json def main(): # python API列表 https://www.botvs.com/bbs-topic/443 #状态信息 LogStatus(" ...

  5. 《Spark Python API 官方文档中文版》 之 pyspark.sql (一)

    摘要:在Spark开发中,由于需要用Python实现,发现API与Scala的略有不同,而Python API的中文资料相对很少.每次去查英文版API的说明相对比较慢,还是中文版比较容易get到所需, ...

  6. 《Spark Python API 官方文档中文版》 之 pyspark.sql (二)

    摘要:在Spark开发中,由于需要用Python实现,发现API与Scala的略有不同,而Python API的中文资料相对很少.每次去查英文版API的说明相对比较慢,还是中文版比较容易get到所需, ...

  7. HBase Python API

    HBase Python API HBase通过thrift机制可以实现多语言编程,信息通过端口传递,因此Python是个不错的选择 吐槽 博主在Mac上配置HBase,奈何Zoomkeeper一直报 ...

  8. 二、Blender/Python API总览

    原文:https://docs.blender.org/api/blender_python_api_current/info_overview.html Python in Blender  Ble ...

  9. Appium+python自动化8-Appium Python API

    Appium+python自动化8-AppiumPython API   前言: Appium Python API全集,不知道哪个大神整理的,这里贴出来分享给大家. 1.contexts conte ...

随机推荐

  1. HTML5 Wijmo:控制 Wijmo Grid 插件的编辑模式

    Wijmo jQuery 插件经常应用于在财务类网站中创建平滑和良好用户体验的交互表格.WijGrid 插件用于显示.排序.分组和编辑数据.今天我们来分享下如何控件WijGrid插件的编辑模式. 在本 ...

  2. windows下react-native环境搭建

    首先不得不先吐槽一下自己,一个坑总是踩很多次,且乐此不疲. 咋办? 写博客记录记录呗. 零.记录的点 Java环境的下载与配置 Android环境的下载与配置 Node环境的下载与配置 创建第一个re ...

  3. 做java工作整整1年了,看到了大牛的奋斗历程,我感觉自己又有目标了

    2014年6月,刚刚踏上社会那会儿,我记得我第一次面试啥都不知道,穿的也不修边幅去应聘一家4s销售,面试官看到我,我明细感觉到了对方厌恶的神色,这是我上社会的第一课,找工作不管是什么工作,衣着得体,是 ...

  4. [moka收藏]php正则表达式验证

    手机号验证规则[['mobile'], 'match','pattern' =>"/^1[34578]\\d{9}$/"], [['sendmail_limit'],'mat ...

  5. python爬虫——爬取NUS-WIDE数据库图片

    实验室需要NUS-WIDE数据库中的原图,数据集的地址为http://lms.comp.nus.edu.sg/research/NUS-WIDE.htm   由于这个数据只给了每个图片的URL,所以需 ...

  6. php学习笔记:文件的上传(包含设置文件的上传大小限制)

    今天写的是文件上传,前几天自学的正规则又忘记了,用了很笨的方法去判断格式,直接上代码: <?php /** * Created by PhpStorm. * User: Administrato ...

  7. 【FFmpeg】ffplay播放rtsp视频流花屏问题

    问题描述:ffplay播放rtsp视频流时,播放过程中随机出现花屏现象. 基本流程学习:阅读ffplay源码,熟悉其播放rtsp视频流的基本流程. 在ffplay源码阅读和分析的基础上,画出了其播放r ...

  8. 将HTML5封装成android应用APK文件的几种方法(转)

    作为下一代的网页语言,HTML5拥有很多让人期待已久的新特性.HTML5的优势之一在于能够实现跨平台游戏编码移植,现在已经有很多公司在移动 设备上使用HTML5技术.随着HTML5跨平台支持的不断增强 ...

  9. 用TextPaint来绘制文字

    TextPaint是paint的子类,用它可以很方便的进行文字的绘制,一般情况下遇到绘制文字的需求时,我们一般用TextPaint所提供的方法.开始学习如何绘制文字之前,我们必须要先了解下androi ...

  10. Android 设计模式一:EIT造型

    前言:首先不提造型,我们先来学习公式. 思绪回到于十七世纪中,牛顿提出了简单公式:F=ma:让人们能轻易理解物体运动的复杂<关系>. 再如,于二十世纪初,爱因斯坦发表了简单公式:E=MC平 ...