使用“matplotlib”绘制高抽象层。

pyg-plot的Python项目详细描述



pyg-alex hagen的一个图形类




``pyg``开始时是围绕``matplotlib``的一个简单包装,帮助我在绘图时保持我的风格不变,但现在它扩展到了一个完整的图形套件。如果你对阅读前两个例子感到厌烦,请跳到下面。这些例子有点酷。

现在的安装是非常手动的,但是这应该可以在unix系统上实现:

`` bash
pip install numpy scipy matplotlib colors
mkdir~/util
cd~/util
git clone https://github.com/alexhagen/pyg-b master pyg
sudo echo"export pythonpath=${pythonpath}:~/util">;~/.bashrc
source~/.bashrc
```


,然后只要使用pyg中的


``python
``pyg导入twod,就可以导入pyg,因为pyg2d
`````

"table"模块有一些jupyter笔记本的表格打印帮助和一些乳胶出版物帮助函数。"threed"模块有一些"matplotlib"三维绘图(这对曲面绘图很好,如果您正在进行几何可视化,请使用my[``pyb`](github.com/alexhagen/pyb)类,我很快会将其包含在"pyg"中,``three2twod``是一个用于注释三维p抽签(如果你有从三维到二维的转换矩阵)。我在下面创建了一些有用的例子。我先举了一些有趣的例子,但有点复杂。如果您想开始,请跳到"[无聊的例子](无聊的例子)"部分。


把它变成一种可以绘制的形式。下面是一个简单的功率匹配示例,但是很快就会有一个api来将数据转换为正确的格式。



``python
from pyg import threed as pyg3d
import numpy as np

x=np.linspace(0.0,5.0)
y=np.linspace(0.0,5.0)
x,y=np.meshGrid(x,y)
z=np.power(x,2.0)-np.power(y,3.0)
plot.surf(x,y,z)
plot.export("u static/threed surf")
plot.show(caption='任意三维曲面')
````


<;div class='pygfigure'name='['anarbitrarythreedimensionsurface']'style='文本对齐:居中;最大宽度:800px;左侧边距:自动;右侧边距:自动;'>;
<;img style='margin:auto;最大宽度:100%;宽度:1250.000000px;高度:auto;'src='''u static/threed\u surf.svg?209289235'/>;
<;div style='margin:auto;text align:center;'class='figureCaption'>;<;b>;图1:<;/b>;任意三维曲面<;/div>;




在最好的情况下,用注解来描述al几何是困难的,但很少有事情是"最好的情况"。大多数可视化领域都依赖于专门为可视化而设计的软件,例如"vtk"及其派生软件。这是非常强大的,但是对于分析数据或编写仿真程序的人来说,他们最不想做的就是为这些程序编写接口。因此,我编写了一个快速而简单的api,将所有数据保存在python中,并在blender中可视化几何体。然后,我有一个接口,代码可以提取导出渲染的相机参数,然后用户可以在三维几何体的上方绘制二维注释。接下来是一个更高级的示例,但下面显示了一个基本示例。


``python
from pyg.pyb import pyb
from pyg import three2twod as pyg32d


scene=pyb.pyb()
scene.rpp(c=(0.,0.,0.),l=(100.,100.,100.),name'cube')
scene.flat(color=''fc8d82',name='newgold')
scene.set-matl(obj='cube',matl='newgold''newgold')
scene.rpp(c=(0,0,-65.),l=(500,500,30.),name='floor')
scene.flat(color=''88888888888',name='gray')
scene.flat(color=''88888888888888','name='gray')
scene set-matl(obj='floor','floor','floor,matl='gray''混合
plot.add数据指针(0,0,0,0,字符串=r$\vec{c}=\左(0,0,0\右)$',
place=-500,200。))
plot.plot.plot.add数据指针(0,0,0,0,0,0,0,{c{c}=\左(0,0,0,0\右)$',
place=-500,200。)
plot.plot.add图例项(color=''fc8d82','name='cube'''cube')\
.br/>.add添加图例项(color=''88888888888888;颜色=''88888888;888'不适用me='floor')
plot.legend(loc=2)
plot.export(''u static/ann-im',ratio='golden')
plot.show('在三维几何图形上使用二维注释')
````



<;div class='pygfigure'name='['使用二维注释sonal3d代数plOT']'style='text-align:center;max-width:800px;margin-left:auto;margin-right:auto;'>;
<;img style='margin:auto;max-width:100%;width:1250.000000px;height:auto;'src='''u static/ann-im.svg?471680233'/>;
<;div style='margin:auto;text align:center;'class='figureCaption'>;<;b>;图2:<;/b>;在三维几何绘图上使用二维注释<;/div>;




大多数绘图程序都讨厌添加"测量值"。它们在调用可视化信息时非常有用,在CAD中几乎是通用的,但在大多数绘图和其他可视化中,它们都找不到。所以,在很大程度上,我在"pyg"中包含了度量值。下面的例子显示了iu医学院和他们的护理部门的年级分布的一些测量。它显示了分布的明显非正态分布,但它也显示了护理部门的年级膨胀,绝大多数班级的成绩是A,而医学院却有很大一部分学生不及格。



``python
from scipy.stats以Gkde的身份进口高斯函数



u med=[]
对于m,g in zip(med,grades):
_M



u nur=[]

n,g(nur,等级)n,g(nr,等级)n,g(nr/>


m_dist=gkde(医疗)
n_dist=gkde(医疗)

Sigma m=np.std(医疗)
mu m=np.me均值(医疗)
Sigma n=np.std(医疗)
mu m=np.m=np.me均值(医疗)
Sigma n=n=n p.std(医疗)mu_n=np.平均值(_nur)

u等级=np.linspace(0,4.0)

plot=pyg2d.pyg2d()
plot.plot.add_线(_grades,m_dist(_grades,m_grades,linestyle='-',285668')
plot.add_线(_grades,n_dist(_grades,n_dist,linestyle='-',linecolor=''fc8d82')
plot.add hmeasure(muu m+sigma,muu m-sigma,0.35,'中间$2\sigma$')
plot.add hmeasure(muu m m m m+sigma,muu m m,muu m m m-br/>绘图。添加度量(μn+sigma_ n,mu_n-sigma戋n,1.5,'中间$2\sigma$')
plot.xlabel(r'grade($g$)[$\text{g p a points}$])
plot.ylabel(r'likelihood($p$)[])
plot.lines戋on()
plot.markers戋off()

plot.export(''u static/measure',ratio='silver')
plot.show(caption='描述二维打印’)
````




<;div class='pygfigure'name='['descriptionOfusionMeasurementSonatWodplot']'style='text-align:center;max-width:800px;margin left:auto;margin right:auto;'>;
<;img style='margin:auto;max-width:100%;width:1250.000000px;height:auto;" src="u static/measure.svg?15579053'/>;
<;div style='margin:auto;text align:center;'class='figueccaption'>;lt;b>;图3;<;b>;二维绘图中有用测量值的描述;lt;div>;
<;lt;div>;










无聊的例子

br/>最简单的pl"pyg"中的otting是线绘制,一个d以下两个图显示了绘制线及其相关不确定性的API。


`` python
x=np.linspace(0.0,4.0*np.pi,1000)
y=np.sin(x)
u y=0.1

plot=pyg2d.pyg2d()
plot.add_line(x,y,linestyle='-',linecolor=''285668',yerr=u y,error y_填写=真,
name=r'$\sin\sin\left(\theta\ri右)$')


plot.xlabel('x坐标($x$)[$$\单位{cm}}$]')
plot.ylabel('x坐标($x$)[$\单位{cm}}$]')



plot.lines_on()
plot.markers/>


plot.export(''u static/line','u static/line','ratio='si银')
plot.plot.show(caption)plot.是的='不确定y')
```





<;div class='pygfigure'name='['alinedrawingWithUnder确定性']'style='text-align:center;max-width:800px;margin left:auto;margin right:auto;'>;
<;img style='margin:auto;max-width:100%;width:1250.000000px;高度:auto;'src='\u static/line.svg?1708006390'/>;
<;div style='margin:auto;text align:center;'class='figureCaption'>;<;b>;图4:<;/b>;一个y中不确定的线条图<;/div>;



``python
`x=np.linspace(0.0,4.0*np.pi,1000)
y=5.0*np.cos(x)
u-y=1.0
x_稀疏=np.linspace(0.0,4.0*np.pi,10)
y_稀疏=5.0*np.cos(x_稀疏)
u-y稀疏=1.0

plot=pyg2d.pyg2d()
plot.addu线(x,y,linestyle='-',linecolor=''fc8d82',yerr=u-y,error_fill=true,
y/>u-y=x,y,y,linestyle='-'''-'''-''-',linecolor='br/>name=r'$\sin\左(\theta\右)$')
plot.plot.add线(x稀疏,y稀疏,linecolor=''000000000000,yerr=u稀疏,
name=r'sparse')
plot.lines_on()
plot.markers_off()
plot.lines['sparse'].plot.lines['sparse'].set_alpha(1.0)
plot.lines['sparse'].set_alpha(1.0)
plot.linelinelines['sparse'].set_alpha(1.0)
plot.linewidth(0.linewidth(0.0)<绘图.export(''u static/err',ratio='silver')
plot.show(caption='不确定正弦曲线和不确定稀疏采样正弦曲线')
````




<;div class='pygfigure'name='['不确定正弦曲线和不确定稀疏采样正弦曲线']'style='text-align:center;max-width:800px;margin left:auto;margin right:auto;'>;
<;img style='margin:auto;最大宽度:100%;宽度:1250.000000px;高度:auto;'src=''''u static/err.svg?1476075781'/>;
<;div style='margin:auto;text align:center;'class='figureCaption'>;<;b>;图5:<;/b>;不确定正弦曲线和不确定稀疏采样正弦曲线<;<;/div>;




下图显示了在并发轴上绘制数据的api。有两种不同的api:第一种api要求绘制数据,然后定义一个将一个轴转换为另一个轴的函数。另一个api要求在不同极限的轴上绘制两个不同的数据集。


}$')
plot.plot.add第y y行(x,y2,linecolor=''285668','name='$y{2}$''''x,y2,linecolor='''285668','name='$y{2}$''''''br/>plot.markers''u off()

plot.xlabel('x坐标($x$)))
plot.xlabel('x坐标($y{1}}$')
plot.ylabel('x坐标($x坐标($y{x坐标($x{x{x$$$))))))'plot.plot.ylabel

plot.export(''u static/dual',ratio='silver')
plot.show($x$轴相同,在不同的$y$轴上的正弦曲线)
````



<;div class='pygfigure'name='['sinsoidswiththesamexaxondifferentityaxes']'style='text-align:center;max width:800px;margin left:auto;margin right:auto;'>;
<;img style='margin:auto;max width:100%;width:1250.000000px;height:auto;'src='''u static/dual.svg?1816804174'/>;
<;div style='margin:auto;text align:center;'class='figureCaption'>;<;b>;图6:<;/b>;具有相同$x$轴的正弦,位于不同$y$轴上<;/div>;。<下一个图显示如何将单个函数与不同的坐标轴进行比较。如果您比较不同的单位,这将非常有用,但我特别使用它,当有一些电测量是非线性校准的(例如,在伽马能谱中)。


``python
x=np.linspace(0,4.0*np.pi,1000)
y=1.0*np.sin(x)

plot=pyg2d.pyg2d()
plot.add_line(x,y,linecolor='285668',name='$y$')
plot.markers_off()

def pi_div(x):
return x/np.pi
plot.add_xx(pi_div)

plot.xlabel($x$)[$\unit{cm}$])
plot.xlabel($x$)[$\unit{\pi}$]的x坐标,Axes=plot.ax2)
plot.ylabel('y坐标($y$)[$\单位{cm}$]')


plot.export(''u static/dualx',ratio='silver')
plot.show('正弦正弦正弦正弦正弦弧度和$\pi$')







<;div class='['sinsofesinsofresinsofresinsofresinsofresinsofresinsofreasundintersofmsofpi']'style='text-align:center;max-width:800px800像素;max-width:800(一)有左边距:auto;右边距:auto;'>;
<;img style='margin:auto;最大宽度:100%;宽度:1250.000000px;高度:auto;'src=''u static/dualx.svg?14341905'/>;
<;div style='margin:auto;text align:center;'class='figureCaption'>;<;b>;图7:<;/b>;正弦弧度和$\pi$<;/div>;
<;/div>;




(https://stackoverflow.com/questions/31452451/importing-an-svg-file-a-matplotlib-figure)[https://stackoverflow.com/questions/31452451/importing-an-svg-file-a-matplotlib-figure]
-svg通过regexing转换为matplotlib(https://matplotlib.org/examples/showcase/firefox.html)[https://matplotlib.org/examples/showcase/firefox.html]



``python

````


欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Android解析JSON数据显示重复结果   Java图像写入   java将JSON对象作为对象而不是字符串写入文件   java获取servlet中的选定下拉列表值   java PowerMockito 1.6.0验证Mockito扩展API中的私有最终重载方法   java将地图图像更改为节点和边   java如何更改IntelliJ IDEA方案和窗格主题?   如何在java中解析文本文件?   当我使用Selenium IDE时,java WebDriver无法找到WebElement,而同样的css在哪里工作良好   java Android无线遥控摄像机   Go、Java和C#中数组的最大长度是多少?   java Guava的@Subscribe事件总线可见性   java如何将带有服务调用的循环重构为流?   java如何处理自定义Hamcrest匹配器中的异常?   java在Android中保存GUI状态   基于时间戳的java检索卡夫卡主题中的偏移量   图像构造函数中的java差异   java RxAndroidBle如何从多个服务读取通知?