matplotlib 安装plot 可以画透明的图吗

人类已经无法阻止理工科宅男了~~~(Gnuplot 和 Matplotlib使用小节) - web开发 - ITeye技术网站
吃屎都难(CSDN)论坛上有张犀利图片(),充分反映了广大理科男生的兴许爱好,见此情此景,我们不能给程序员丢脸,所以我们来画一张出来。2,LINUX下画图
在Linux下画曲线图,经过查询,发现有一款类似Matlab的工具,叫GNUPLOT,其实Linux下也有Matlab,不过是版权软件,所以还是不弄了。
2.1 GNUPLOT的安装
安装很简单:apt-getinstall gnuplot
提示缺少的包,再安装一下就可以了;
2.2 简单的画图
出现命令提示界面:
//让坐标轴显示出来
set xrange [0:1.5];
set yrange [-1.5:0.1]//设置xy轴的显示范围
plot3*x*log(x)-1.0/36*exp(-(36.0*x-36.0/exp(1))**4)
2.4文档资料
同志们可以参考如下文档:
4,3,用Python+Matplotlib画图
这个程序在Linux下运行非常简单,但是大多数人用的Win32,虽然GNUPLOT也有Win版,但是要有安装环境;那么,我们该如何选择:使用C\C++和OPENGL来描绘?不过显得有点小题大做,也不会OPENGL库,TC下虽然比较容易,但是实在是太落伍了。
试试初学的Python,发现Python库真的很牛逼啊,有个叫Matplotlib库,就是作图用的,达到出版水平
Linux下面安装是比较简单的。
sudo apt-get install python-matplotlib python-numpy
3.2使用参考
Matplotlib是Python一个比较成熟的库,有关说明可以参见。
在本例中的文本是:
#!/usr/bin/python
from pylab import *
x = arange(-2,2,0.001)
y = 3*x*log(x)-1.0/36*exp(-(36.0*x-36.0/exp(1))**4)
plt.plot(x,y)
plt.title(u'LOL')
plt.xlabel(u'x')
plt.ylabel(u'y')
plt.axis([-0.05,1.2,-1.5,0.2])
#坐标轴范围
text(0.0,0.05,r'$f(x)=3x{log}(x)-\frac{1}{36}e^{-(36x-\frac{36}{e})^4},fontsize=18) #公式显示
plt.grid(True) #网格显示
plt.show()4,打包成WIN程序
Python有几个不错的打包程序,比较知名就是py2exe;
我在LINUX下没有发现py2exe,这个要在Win下安装,因为用到了很多Win的DLL,Shit,有下了python2.7.msi,numpy,matplotlib,py2exe2.7,对应的WIN版本,注意版本号要一致。安装都是GUI,不解释
4.2 打包脚本
A,首先我们打开命令行cmd,C:\Python27\目录下,把打包的脚本复制到此目录下,主要是为了方便,
写一个脚本setup.py:
这个脚本写的可费事,各种错误,先解决DLL找不到,后来打包后又找不到matplotlibdata file,后来在官方文档中找到了解决方法。
我们先把正确安装文本写出来,错误的,我会在后面附录中加上:#Used successfully in Python2.5 with matplotlib 0.91.2 and PyQt4 (andQt 4.3.3)
fromdistutils.core import setup
importpy2exe
#We need to import the glob module to search for all files.
importglob
#We need to exclude matplotlib backends not being used by thisexecutable. You may find
#that you need different excludes to create a working executable withyour chosen backend.
#We also need to include include various numerix libraries that theother functions call.
'py2exe':{ "includes" : [ "matplotlib.backends",
"matplotlib.figure","pylab","numpy",
"matplotlib.backends.backend_tkagg"],
'excludes':['_gtkagg', '_tkagg', '_agg2', '_cairo', '_cocoaagg',
'_fltkagg','_gtk', '_gtkcairo', ],
'dll_excludes':['libgdk-win32-2.0-0.dll',
'libgobject-2.0-0.dll']
#Save matplotlib-data to mpl-data ( It is located in thematplotlib\mpl-data
#folder and the compiled programs will look for it in \mpl-data
#note: using matplotlib.get_mpldata_info
data_files= [(r'mpl-data',glob.glob(r'C:\Python27\Lib\site-packages\matplotlib\mpl-data\*.*')),
#Because matplotlibrc does not have an extension, glob does not findit (at least I think that's why)
#So add it manually here:
(r'mpl-data',[r'C:\Python27\Lib\site-packages\matplotlib\mpl-data\matplotlibrc']),
(r'mpl-data\images',glob.glob(r'C:\Python27\Lib\site-packages\matplotlib\mpl-data\images\*.*')),
(r'mpl-data\fonts',glob.glob(r'C:\Python27\Lib\site-packages\matplotlib\mpl-data\fonts\*.*'))]
#for console program use 'console = [{"script" :"scriptname.py"}]
setup(windows=[{"script": "lol.py"}], options=opts, data_files=data_files) B,编译命令:
Python setup.py py2exe
在一段狂多的输出后,注意一下提示信息,往往是提醒你注意运行要附近的DLL文件等,如果你分发后在别的机器上无法运行,那么你要把这些文件放入dist文件夹就可以了。
编译后生成build和dist文件夹,dist就是分布文件,里面找到exe,就可以运行了,提示出错的话,就要看下Log文件,找下解决方法。5.附录
5.1尝试打包
分别装了python27.msi,numpy,matplotlib,scimpy包,编写的程序在控制台下可以正常运行。
安装py2exe程序,需要编写一个setup脚本
实例为:#setup.py
fromdistutils.core import setup
importpy2exe
#setup(console=["lol.py"])
options= {
"py2exe":{
"dll_excludes":["MSVCP90.dll"],#开始没有这句
windows=[{"script":"lol.py"}]
出现MSVCP90缺失问题,添加后正常,可以参照以下两篇文章:1,();2,();
这里可以把文件放在编译目录下也可以
后来编译出现错误RuntimeError:Could not find the matplotlib data files网上查了一下,废了很多事情,都没有解决,越来越挫
费了半天事情,搜索一下,发现官方文档有说明()
修改以后,去掉不必要的包和Include选项,打包正常了。5.2,运行可能需要的文件
***binary dependencies ***
Yourexecutable(s) also depend on these dlls which are not included,
youmay or may not need to distribute them.
Makesure you have the license if you distribute any of them, and
makesure you don't distribute files belonging to the operating system.
OLEAUT32.dll- C:\Windows\system32\OLEAUT32.dll
USER32.dll- C:\Windows\system32\USER32.dll
IMM32.dll- C:\Windows\system32\IMM32.dll
SHELL32.dll- C:\Windows\system32\SHELL32.dll
ole32.dll- C:\Windows\system32\ole32.dll
COMDLG32.dll- C:\Windows\system32\COMDLG32.dll
fftpack_lite.pyd- C:\Python27\lib\site-packages\numpy\fft\fftpack_lite.pyd
COMCTL32.dll- C:\Windows\system32\COMCTL32.dll
ADVAPI32.dll- C:\Windows\system32\ADVAPI32.dll
msvcrt.dll- C:\Windows\system32\msvcrt.dll
WS2_32.dll- C:\Windows\system32\WS2_32.dll
GDI32.dll- C:\Windows\system32\GDI32.dll
KERNEL32.dll- C:\Windows\system32\KERNEL32.dll
MSVCP90.dll– C:\Python27\MSVCP90.dll
打包编译可能出现以上问题,把msvcp90.dll复制到dist文件夹里面,就可以了,这个文件在VC2008里面都有,不行网上搜一下。 5.3 发布时候问题
我在自己安装有Python环境下运行,没有任何错误,但是分发到别的机器上,运行程序正常,但是公式无法显示,是乱码,关闭程序后有错误提示,提示某字体模块没有找到,我尝试将模块附加到包中,但是无法解决这个问题,有知道的请给个解决方法,多谢。
浏览: 1286639 次
来自: 杭州
守护线程的方式是在 线程对象创建 之前 用线程对象的setDa ...
js循环判断有错误。第一次批量加了几个,后面在单独加几个,有可 ...
FileChannel inChannel = new Fil ...Matplotlib,这样如何用,画,GIF,动图_珍藏百科
Matplotlib,这样如何用,画,GIF,动图
编辑: &&&来源:用户发布&&&发布时间:&&&查看次数:35
求助,Matplotlib了绝,这样如何用,画,GIF,动图?急急急。
该问题暂无回答。
电脑数码相关
本文相关文章
- 关于我们 - 版权声明-
广告服务 - 友情链接 - 管理登录 -
Copyright &
All Rights Reserved
如有任何侵权、造谣信息请将网页地址和有法律效力的侵权造谣证明或判决书发往QQ:小时内删除。
苏ICP备号-1&如何用 Matplotlib 画 GIF 动图 - 推酷
如何用 Matplotlib 画 GIF 动图
今天分享的这篇译文中介绍了 matplotlib 绘图库的一个 使用示例,即如何制作 GIF 动图。本文原作者为 Eli Bendersky,译者为 唐晓霆 Jason ,由编程派 EarlGrey 校对。
译者简介:唐晓霆,在香港的成都人,城市大学研究助理,会写python,兴趣是深度学习。
这篇短文介绍如何用 Python 里的 matplotlib 画出 GIF 动图。下面的代码我在一台安装了 ImagMagick 的 Ubuntu 机器上运行过。 若想要用 matplotlib 的 save 方法渲染 GIF 动图的话,就必须安装 ImageMagick 。
下面给一个动画样本:
有几点需要注意:
图里的散点部分是不变的;变的是直线
X 轴的标题每一帧都在变化
下面上制作该图的代码:
import sys
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
fig, ax = plt.subplots()
fig.set_tight_layout(True)
询问图形在屏幕上的尺寸和DPI(每英寸点数)。
注意当我们把图形储存成一个文件时,我们需要再另外提供一个DPI值
print('fig size: {0} DPI, size in inches {1}'.format(
fig.get_dpi(), fig.get_size_inches()))
# 画出一个维持不变(不会被重画)的散点图和一开始的那条直线。
x = np.arange(0, 20, 0.1)
ax.scatter(x, x + np.random.normal(0, 3.0, len(x)))
line, = ax.plot(x, x - 5, 'r-', linewidth=2)
def update(i):
label = 'timestep {0}'.format(i)
print(label)
# 更新直线和x轴(用一个新的x轴的标签)。
# 用元组(Tuple)的形式返回在这一帧要被重新绘图的物体
line.set_ydata(x - 5 + i)
ax.set_xlabel(label)
return line, ax
if __name__ == '__main__':
# FuncAnimation 会在每一帧都调用“update” 函数。
# 在这里设置一个10帧的动画,每帧之间间隔200毫秒
anim = FuncAnimation(fig, update, frames=np.arange(0, 10), interval=200)
if len(sys.argv) & 1 and sys.argv[1] == 'save':
anim.save('line.gif', dpi=80, writer='imagemagick')
# plt.show() 会一直循环播放动画
plt.show()
如果你想换一个更精美的主题,安装 seaborn 库之后添加一行:
import seaborn
然后你就会得到这个图:
提一句关于文件大小的警告:虽然我在这里分享的GIF只有 10 帧,而且图像也很简单,但是它们每一帧都占大约 160K 。就我理解而言,GIF 动图不使用跨帧压缩, 所以这使得长一点的 GIF 占的空间异常大。减少帧数到最最小并且让每一帧的图像小一点(通过在 matplotlib 里调整图形尺寸或者 DPI ),就可以多多少少帮助缓解一下这个问题。
EarlGrey:我自己测试生成的 line.gif 文件大概 86 KB 左右。
是EarlGrey@编程派发起成立的一个专注于 Python 技术内容翻译的小组,目前已有 30 多名 Python 技术爱好者加入。
翻译组出品的内容(包括教程、文档、书籍、视频)将在编程派微信公众号首发,欢迎各位 Python 爱好者推荐相关线索。推荐线索,可直接在编程派微信公众号推文下留言即可。
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致

我要回帖

更多关于 matplotlib.pyplot 的文章

 

随机推荐