Python科学画图代码分享


Posted in Python onNovember 29, 2017

Python画图主要用到matplotlib这个库。Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。

这里有一本电子书供大家参考:《Python图表绘制:matplotlib绘图库入门

具体来说是pylab和pyplot这两个子库。这两个库可以满足基本的画图需求,而条形图,散点图等特殊图,下面再单独具体介绍。

首先给出pylab神器镇文:pylab.rcParams.update(params)。这个函数几乎可以调节图的一切属性,包括但不限于:坐标范围,axes标签字号大小,xtick,ytick标签字号,图线宽,legend字号等。

具体参数参看官方文档:http://matplotlib.org/users/customizing.html

首先给出一个Python3画图的例子。

import matplotlib.pyplot as plt
import matplotlib.pylab as pylab
import scipy.io
import numpy as np
params={
  'axes.labelsize': '35',    
  'xtick.labelsize':'27',
  'ytick.labelsize':'27',
  'lines.linewidth':2 ,
  'legend.fontsize': '27',
  'figure.figsize'  : '12, 9'  # set figure size
}
pylab.rcParams.update(params)      #set figure parameter
#line_styles=['ro-','b^-','gs-','ro--','b^--','gs--'] #set line style
    
#We give the coordinate date directly to give an example.
x1 = [-20,-15,-10,-5,0,0,5,10,15,20]
y1 = [0,0.04,0.1,0.21,0.39,0.74,0.78,0.80,0.82,0.85]
y2 = [0,0.014,0.03,0.16,0.37,0.78,0.81,0.83,0.86,0.92]
y3 = [0,0.001,0.02,0.14,0.34,0.77,0.82,0.85,0.90,0.96]
y4 = [0,0,0.02,0.12,0.32,0.77,0.83,0.87,0.93,0.98]
y5 = [0,0,0.02,0.11,0.32,0.77,0.82,0.90,0.95,1]
 
 
plt.plot(x1,y1,'bo-',label='m=2, p=10%',markersize=20) # in 'bo-', b is blue, o is O marker, - is solid line and so on
plt.plot(x1,y2,'gv-',label='m=4, p=10%',markersize=20)
plt.plot(x1,y3,'ys-',label='m=6, p=10%',markersize=20)
plt.plot(x1,y4,'ch-',label='m=8, p=10%',markersize=20)
plt.plot(x1,y5,'mD-',label='m=10, p=10%',markersize=20)
 
 
fig1 = plt.figure(1)
axes = plt.subplot(111) 
#axes = plt.gca()
axes.set_yticks([0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0])
axes.grid(True) # add grid
 
plt.legend(loc="lower right") #set legend location
plt.ylabel('Percentage')  # set ystick label
plt.xlabel('Difference') # set xstck label
 
plt.savefig('D:\\commonNeighbors_CDF_snapshots.eps',dpi = 1000,bbox_inches='tight')
plt.show()

显示效果如下:

Python科学画图代码分享

代码没什么好说的,这里只说一下plt.subplot(111)这个函数。

plt.subplot(111)和plt.subplot(1,1,1)是等价的。意思是将区域分成1行1列,当前画的是第一个图(排序由行至列)。

plt.subplot(211)意思就是将区域分成2行1列,当前画的是第一个图(第一行,第一列)。以此类推,只要不超过10,逗号就可省去。

python画条形图。代码如下。

import scipy.io
import numpy as np
import matplotlib.pylab as pylab
import matplotlib.pyplot as plt
import matplotlib.ticker as mtick
params={
  'axes.labelsize': '35',
  'xtick.labelsize':'27',
  'ytick.labelsize':'27',
  'lines.linewidth':2 ,
  'legend.fontsize': '27',
  'figure.figsize'  : '24, 9'
}
pylab.rcParams.update(params)


y1 = [9.79,7.25,7.24,4.78,4.20]
y2 = [5.88,4.55,4.25,3.78,3.92]
y3 = [4.69,4.04,3.84,3.85,4.0]
y4 = [4.45,3.96,3.82,3.80,3.79]
y5 = [3.82,3.89,3.89,3.78,3.77]

ind = np.arange(5)        # the x locations for the groups
width = 0.15
plt.bar(ind,y1,width,color = 'blue',label = 'm=2') 
plt.bar(ind+width,y2,width,color = 'g',label = 'm=4') # ind+width adjusts the left start location of the bar.
plt.bar(ind+2*width,y3,width,color = 'c',label = 'm=6')
plt.bar(ind+3*width,y4,width,color = 'r',label = 'm=8')
plt.bar(ind+4*width,y5,width,color = 'm',label = 'm=10')
plt.xticks(np.arange(5) + 2.5*width, ('10%','15%','20%','25%','30%'))

plt.xlabel('Sample percentage')
plt.ylabel('Error rate')

fmt = '%.0f%%' # Format you want the ticks, e.g. '40%'
xticks = mtick.FormatStrFormatter(fmt)  
# Set the formatter
axes = plt.gca()  # get current axes
axes.yaxis.set_major_formatter(xticks) # set % format to ystick.
axes.grid(True)
plt.legend(loc="upper right")
plt.savefig('D:\\errorRate.eps', format='eps',dpi = 1000,bbox_inches='tight')

plt.show()

结果如下:

Python科学画图代码分享

画散点图,主要是scatter这个函数,其他类似。

画网络图,要用到networkx这个库,下面给出一个实例:

import networkx as nx
import pylab as plt
g = nx.Graph()
g.add_edge(1,2,weight = 4)
g.add_edge(1,3,weight = 7)
g.add_edge(1,4,weight = 8)
g.add_edge(1,5,weight = 3)
g.add_edge(1,9,weight = 3)
 
g.add_edge(1,6,weight = 6)
g.add_edge(6,7,weight = 7)
g.add_edge(6,8,weight = 7) 
 
g.add_edge(6,9,weight = 6)
g.add_edge(9,10,weight = 7)
g.add_edge(9,11,weight = 6)

fixed_pos = {1:(1,1),2:(0.7,2.2),3:(0,1.8),4:(1.6,2.3),5:(2,0.8),6:(-0.6,-0.6),7:(-1.3,0.8), 8:(-1.5,-1), 9:(0.5,-1.5), 10:(1.7,-0.8), 11:(1.5,-2.3)} #set fixed layout location

#pos=nx.spring_layout(g) # or you can use other layout set in the module
nx.draw_networkx_nodes(g,pos = fixed_pos,nodelist=[1,2,3,4,5],
node_color = 'g',node_size = 600)
nx.draw_networkx_edges(g,pos = fixed_pos,edgelist=[(1,2),(1,3),(1,4),(1,5),(1,9)],edge_color='g',width = [4.0,4.0,4.0,4.0,4.0],label = [1,2,3,4,5],node_size = 600)

nx.draw_networkx_nodes(g,pos = fixed_pos,nodelist=[6,7,8],
node_color = 'r',node_size = 600)
nx.draw_networkx_edges(g,pos = fixed_pos,edgelist=[(6,7),(6,8),(1,6)],width = [4.0,4.0,4.0],edge_color='r',node_size = 600)
 
nx.draw_networkx_nodes(g,pos = fixed_pos,nodelist=[9,10,11],
node_color = 'b',node_size = 600)
nx.draw_networkx_edges(g,pos = fixed_pos,edgelist=[(6,9),(9,10),(9,11)],width = [4.0,4.0,4.0],edge_color='b',node_size = 600)

plt.text(fixed_pos[1][0],fixed_pos[1][1]+0.2, s = '1',fontsize = 40)
plt.text(fixed_pos[2][0],fixed_pos[2][1]+0.2, s = '2',fontsize = 40)
plt.text(fixed_pos[3][0],fixed_pos[3][1]+0.2, s = '3',fontsize = 40)
plt.text(fixed_pos[4][0],fixed_pos[4][1]+0.2, s = '4',fontsize = 40)
plt.text(fixed_pos[5][0],fixed_pos[5][1]+0.2, s = '5',fontsize = 40)
plt.text(fixed_pos[6][0],fixed_pos[6][1]+0.2, s = '6',fontsize = 40)
plt.text(fixed_pos[7][0],fixed_pos[7][1]+0.2, s = '7',fontsize = 40)
plt.text(fixed_pos[8][0],fixed_pos[8][1]+0.2, s = '8',fontsize = 40)
plt.text(fixed_pos[9][0],fixed_pos[9][1]+0.2, s = '9',fontsize = 40)
plt.text(fixed_pos[10][0],fixed_pos[10][1]+0.2, s = '10',fontsize = 40)
plt.text(fixed_pos[11][0],fixed_pos[11][1]+0.2, s = '11',fontsize = 40)

plt.show()

结果如下:

Python科学画图代码分享

总结

以上就是本文关于Python科学画图代码分享的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

Python 相关文章推荐
用Python计算三角函数之acos()方法的使用
May 15 Python
Python新手入门最容易犯的错误总结
Apr 24 Python
PyQt 线程类 QThread使用详解
Jul 16 Python
python针对excel的操作技巧
Mar 13 Python
python调用staf自动化框架的方法
Dec 26 Python
python 使用装饰器并记录log的示例代码
Jul 12 Python
python 同时读取多个文件的例子
Jul 16 Python
树莓派极简安装OpenCv的方法步骤
Oct 10 Python
基于python traceback实现异常的获取与处理
Dec 13 Python
Windows 平台做 Python 开发的最佳组合(推荐)
Jul 27 Python
Python编写单元测试代码实例
Sep 10 Python
用python对excel查重
Dec 07 Python
Python中Scrapy爬虫图片处理详解
Nov 29 #Python
Python使用django框架实现多人在线匿名聊天的小程序
Nov 29 #Python
Python实现的计数排序算法示例
Nov 29 #Python
Scrapy框架CrawlSpiders的介绍以及使用详解
Nov 29 #Python
pycharm下打开、执行并调试scrapy爬虫程序的方法
Nov 29 #Python
Python快速排序算法实例分析
Nov 29 #Python
Python3学习urllib的使用方法示例
Nov 29 #Python
You might like
thinkphp中html:list标签传递多个参数实例
2014/10/30 PHP
简单谈谈PHP中strlen 函数
2016/02/27 PHP
PHP等比例压缩图片的实例代码
2018/07/26 PHP
Smarty缓存机制实例详解【三种缓存方式】
2019/07/20 PHP
BootStrap响应式导航条实例介绍
2016/05/06 Javascript
输入法的回车与消息发送快捷键回车的冲突解决方法
2016/08/09 Javascript
使用BootStrap实现表格隔行变色及hover变色并在需要时出现滚动条
2017/01/04 Javascript
javascript实现数据双向绑定的三种方式小结
2017/03/09 Javascript
利用Angular7开发一个Radio组件的全过程
2019/07/11 Javascript
微信小程序实现分享商品海报功能
2019/09/30 Javascript
彻底搞懂并解决vue-cli4中图片显示的问题实现
2020/08/31 Javascript
vue 动态添加class,三个以上的条件做判断方式
2020/11/02 Javascript
Python中将变量按行写入txt文本中的方法
2018/04/03 Python
Python之文字转图片方法
2018/05/10 Python
python爬取微信公众号文章
2018/08/31 Python
python事件驱动event实现详解
2018/11/21 Python
python 标准差计算的实现(std)
2019/07/29 Python
python中时间转换datetime和pd.to_datetime详析
2019/08/11 Python
对python中arange()和linspace()的区别说明
2020/05/03 Python
jupyter notebook的安装与使用详解
2020/05/18 Python
使用keras实现Precise, Recall, F1-socre方式
2020/06/15 Python
Django跨域请求原理及实现代码
2020/11/14 Python
澳大利亚有机化妆品网上商店:The Well Store
2020/02/20 全球购物
linux比较文件内容的命令是什么
2015/09/23 面试题
个人承诺书怎么写
2014/05/24 职场文书
应届大专生自荐书
2014/06/16 职场文书
2014年最新领导班子整改方案
2014/09/27 职场文书
关于运动会广播稿200字
2014/10/08 职场文书
致800米运动员广播稿(10篇)
2014/10/17 职场文书
2014年小学教师工作总结
2014/11/10 职场文书
务虚会发言材料
2014/12/25 职场文书
大学生暑期社会实践的个人总结!
2019/07/17 职场文书
Feign调用传输文件异常的解决
2021/06/24 Java/Android
万能密码的SQL注入漏洞其PHP环境搭建及防御手段
2021/09/04 SQL Server
ConditionalOnProperty配置swagger不生效问题及解决
2022/06/14 Java/Android