Python绘图之二维图与三维图详解


Posted in Python onAugust 04, 2020

各位工程师累了吗? 推荐一篇可以让你技术能力达到出神入化的网站"持久男"

1.二维绘图

a. 一维数据集

用 Numpy ndarray 作为数据传入 ply

1.

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt

np.random.seed(1000)
y = np.random.standard_normal(10)
print "y = %s"% y
x = range(len(y))
print "x=%s"% x
plt.plot(y)
plt.show()

Python绘图之二维图与三维图详解

Python绘图之二维图与三维图详解

2.操纵坐标轴和增加网格及标签的函数

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt

np.random.seed(1000)
y = np.random.standard_normal(10)
plt.plot(y.cumsum())
plt.grid(True) ##增加格点
plt.axis('tight') # 坐标轴适应数据量 axis 设置坐标轴
plt.show()

Python绘图之二维图与三维图详解

3.plt.xlim 和 plt.ylim 设置每个坐标轴的最小值和最大值

#!/etc/bin/python
#coding=utf-8
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt

np.random.seed(1000)
y = np.random.standard_normal(20)
plt.plot(y.cumsum())
plt.grid(True) ##增加格点
plt.xlim(-1,20)
plt.ylim(np.min(y.cumsum())- 1, np.max(y.cumsum()) + 1)

plt.show()

Python绘图之二维图与三维图详解

4. 添加标题和标签 plt.title, plt.xlabe, plt.ylabel 离散点, 线

#!/etc/bin/python
#coding=utf-8
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt

np.random.seed(1000)
y = np.random.standard_normal(20)

plt.figure(figsize=(7,4)) #画布大小
plt.plot(y.cumsum(),'b',lw = 1.5) # 蓝色的线
plt.plot(y.cumsum(),'ro') #离散的点
plt.grid(True)
plt.axis('tight')
plt.xlabel('index')
plt.ylabel('value')
plt.title('A simple Plot')
plt.show()

Python绘图之二维图与三维图详解

b. 二维数据集

np.random.seed(2000)
y = np.random.standard_normal((10, 2)).cumsum(axis=0)  #10行2列  在这个数组上调用cumsum 计算赝本数据在0轴(即第一维)上的总和
print y

Python绘图之二维图与三维图详解

1.两个数据集绘图

#!/etc/bin/python
#coding=utf-8
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt

np.random.seed(2000)
y = np.random.standard_normal((10, 2))
plt.figure(figsize=(7,5))
plt.plot(y, lw = 1.5)
plt.plot(y, 'ro')
plt.grid(True)
plt.axis('tight')
plt.xlabel('index')
plt.ylabel('value')
plt.title('A simple plot')
plt.show()

Python绘图之二维图与三维图详解

2.添加图例 plt.legend(loc = 0)

#!/etc/bin/python
#coding=utf-8
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt

np.random.seed(2000)
y = np.random.standard_normal((10, 2))
plt.figure(figsize=(7,5))
plt.plot(y[:,0], lw = 1.5,label = '1st')
plt.plot(y[:,1], lw = 1.5, label = '2st')
plt.plot(y, 'ro')
plt.grid(True)
plt.legend(loc = 0) #图例位置自动
plt.axis('tight')
plt.xlabel('index')
plt.ylabel('value')
plt.title('A simple plot')
plt.show()

Python绘图之二维图与三维图详解

3.使用2个 Y轴(左右)fig, ax1 = plt.subplots() ax2 = ax1.twinx()

#!/etc/bin/python
#coding=utf-8
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt

np.random.seed(2000)
y = np.random.standard_normal((10, 2))

fig, ax1 = plt.subplots() # 关键代码1 plt first data set using first (left) axis

plt.plot(y[:,0], lw = 1.5,label = '1st')

plt.plot(y[:,0], 'ro')
plt.grid(True)
plt.legend(loc = 0) #图例位置自动
plt.axis('tight')
plt.xlabel('index')
plt.ylabel('value')
plt.title('A simple plot')

ax2 = ax1.twinx() #关键代码2 plt second data set using second(right) axis
plt.plot(y[:,1],'g', lw = 1.5, label = '2nd')
plt.plot(y[:,1], 'ro')
plt.legend(loc = 0)
plt.ylabel('value 2nd')
plt.show()

Python绘图之二维图与三维图详解

4.使用两个子图(上下,左右)plt.subplot(211)

通过使用 plt.subplots 函数,可以直接访问底层绘图对象,例如可以用它生成和第一个子图共享 x 轴的第二个子图.

#!/etc/bin/python
#coding=utf-8
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt

np.random.seed(2000)
y = np.random.standard_normal((10, 2))

plt.figure(figsize=(7,5))
plt.subplot(211) #两行一列,第一个图
plt.plot(y[:,0], lw = 1.5,label = '1st')
plt.plot(y[:,0], 'ro')
plt.grid(True)
plt.legend(loc = 0) #图例位置自动
plt.axis('tight')
plt.ylabel('value')
plt.title('A simple plot')


plt.subplot(212) #两行一列.第二个图
plt.plot(y[:,1],'g', lw = 1.5, label = '2nd')
plt.plot(y[:,1], 'ro')
plt.grid(True)
plt.legend(loc = 0)
plt.xlabel('index')
plt.ylabel('value 2nd')
plt.axis('tight')
plt.show()

Python绘图之二维图与三维图详解

5.左右子图

有时候,选择两个不同的图标类型来可视化数据可能是必要的或者是理想的.利用子图方法:

#!/etc/bin/python
#coding=utf-8
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt

np.random.seed(2000)
y = np.random.standard_normal((10, 2))

plt.figure(figsize=(10,5))
plt.subplot(121) #两行一列,第一个图
plt.plot(y[:,0], lw = 1.5,label = '1st')
plt.plot(y[:,0], 'ro')
plt.grid(True)
plt.legend(loc = 0) #图例位置自动
plt.axis('tight')
plt.xlabel('index')
plt.ylabel('value')
plt.title('1st Data Set')

plt.subplot(122)
plt.bar(np.arange(len(y)), y[:,1],width=0.5, color='g',label = '2nc')
plt.grid(True)
plt.legend(loc=0)
plt.axis('tight')
plt.xlabel('index')
plt.title('2nd Data Set')
plt.show()

Python绘图之二维图与三维图详解

c.其他绘图样式,散点图,直方图等

1.散点图

#!/etc/bin/python
#coding=utf-8
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt

np.random.seed(2000)
y = np.random.standard_normal((1000, 2))
plt.figure(figsize=(7,5))
plt.scatter(y[:,0],y[:,1],marker='o')
plt.grid(True)
plt.xlabel('1st')
plt.ylabel('2nd')
plt.title('Scatter Plot')
plt.show()

Python绘图之二维图与三维图详解

2.直方图 plt.hist

#!/etc/bin/python
#coding=utf-8
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt

np.random.seed(2000)
y = np.random.standard_normal((1000, 2))
plt.figure(figsize=(7,5))
plt.hist(y,label=['1st','2nd'],bins=25)
plt.grid(True)
plt.xlabel('value')
plt.ylabel('frequency')
plt.title('Histogram')
plt.show()

Python绘图之二维图与三维图详解

3.直方图 同一个图中堆叠

#!/etc/bin/python
#coding=utf-8
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt

np.random.seed(2000)
y = np.random.standard_normal((1000, 2))
plt.figure(figsize=(7,5))
plt.hist(y,label=['1st','2nd'],color=['b','g'],stacked=True,bins=20)
plt.grid(True)
plt.xlabel('value')
plt.ylabel('frequency')
plt.title('Histogram')
plt.show()

Python绘图之二维图与三维图详解

4.箱型图 boxplot

#!/etc/bin/python
#coding=utf-8
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt

np.random.seed(2000)
y = np.random.standard_normal((1000, 2))
fig, ax = plt.subplots(figsize=(7,4))
plt.boxplot(y)

plt.grid(True)
plt.setp(ax,xticklabels=['1st' , '2nd'])
plt.xlabel('value')
plt.ylabel('frequency')
plt.title('Histogram')
plt.show()

Python绘图之二维图与三维图详解

5.绘制函数

from matplotlib.patches import Polygon
import numpy as np
import matplotlib.pyplot as plt

#1. 定义积分函数
def func(x):
  return 0.5 * np.exp(x)+1

#2.定义积分区间
a,b = 0.5, 1.5
x = np.linspace(0, 2 )
y = func(x)
#3.绘制函数图形
fig, ax = plt.subplots(figsize=(7,5))
plt.plot(x,y, 'b',linewidth=2)
plt.ylim(ymin=0)
#4.核心, 我们使用Polygon函数生成阴影部分,表示积分面积:
Ix = np.linspace(a,b)
Iy = func(Ix)
verts = [(a,0)] + list(zip(Ix, Iy))+[(b,0)]
poly = Polygon(verts,facecolor='0.7',edgecolor = '0.5')
ax.add_patch(poly)
#5.用plt.text和plt.figtext在图表上添加数学公式和一些坐标轴标签。
plt.text(0.5 *(a+b),1,r"$\int_a^b f(x)\mathrm{d}x$", horizontalalignment ='center',fontsize=20)
plt.figtext(0.9, 0.075,'$x$')
plt.figtext(0.075, 0.9, '$f(x)$')
#6. 分别设置x,y刻度标签的位置。
ax.set_xticks((a,b))
ax.set_xticklabels(('$a$','$b$'))
ax.set_yticks([func(a),func(b)])
ax.set_yticklabels(('$f(a)$','$f(b)$'))
plt.grid(True)

Python绘图之二维图与三维图详解

2.金融学图表 matplotlib.finance

1.烛柱图 candlestick

#!/etc/bin/python
#coding=utf-8
import matplotlib.pyplot as plt
import matplotlib.finance as mpf
start = (2014, 5,1)
end = (2014, 7,1)
quotes = mpf.quotes_historical_yahoo('^GDAXI',start,end)
# print quotes[:2]

fig, ax = plt.subplots(figsize=(8,5))
fig.subplots_adjust(bottom = 0.2)
mpf.candlestick(ax, quotes, width=0.6, colorup='b',colordown='r')
plt.grid(True)
ax.xaxis_date() #x轴上的日期
ax.autoscale_view()
plt.setp(plt.gca().get_xticklabels(),rotation=30) #日期倾斜
plt.show()

Python绘图之二维图与三维图详解

2. plot_day_summary

该函数提供了一个相当类似的图标类型,使用方法和 candlestick 函数相同,使用类似的参数. 这里开盘价和收盘价不是由彩色矩形表示,而是由两条短水平线表示.

#!/etc/bin/python
#coding=utf-8
import matplotlib.pyplot as plt
import matplotlib.finance as mpf
start = (2014, 5,1)
end = (2014, 7,1)
quotes = mpf.quotes_historical_yahoo('^GDAXI',start,end)
# print quotes[:2]

fig, ax = plt.subplots(figsize=(8,5))
fig.subplots_adjust(bottom = 0.2)
mpf.plot_day_summary(ax, quotes, colorup='b',colordown='r')
plt.grid(True)
ax.xaxis_date() #x轴上的日期
ax.autoscale_view()
plt.setp(plt.gca().get_xticklabels(),rotation=30) #日期倾斜
plt.show()

Python绘图之二维图与三维图详解

3.股价数据和成交量

#!/etc/bin/python
#coding=utf-8
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.finance as mpf
start = (2014, 5,1)
end = (2014, 7,1)
quotes = mpf.quotes_historical_yahoo('^GDAXI',start,end)
# print quotes[:2]

quotes = np.array(quotes)
fig, (ax1, ax2) = plt.subplots(2, sharex=True, figsize=(8,6))
mpf.candlestick(ax1, quotes, width=0.6,colorup='b',colordown='r')
ax1.set_title('Yahoo Inc.')
ax1.set_ylabel('index level')
ax1.grid(True)
ax1.xaxis_date()
plt.bar(quotes[:,0] - 0.25, quotes[:, 5], width=0.5)

ax2.set_ylabel('volume')
ax2.grid(True)
ax2.autoscale_view()
plt.setp(plt.gca().get_xticklabels(),rotation=30)
plt.show()

Python绘图之二维图与三维图详解

3.3D 绘图

#!/etc/bin/python
#coding=utf-8
import numpy as np
import matplotlib.pyplot as plt

stike = np.linspace(50, 150, 24)
ttm = np.linspace(0.5, 2.5, 24)
stike, ttm = np.meshgrid(stike, ttm)
print stike[:2]

iv = (stike - 100) ** 2 / (100 * stike) /ttm
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure(figsize=(9,6))
ax = fig.gca(projection='3d')
surf = ax.plot_surface(stike, ttm, iv, rstride=2, cstride=2, cmap=plt.cm.coolwarm, linewidth=0.5, antialiased=True)
ax.set_xlabel('strike')
ax.set_ylabel('time-to-maturity')
ax.set_zlabel('implied volatility')

plt.show()

Python绘图之二维图与三维图详解

到此这篇关于Python绘图之二维图与三维图详解的文章就介绍到这了,更多相关Python绘图内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python实现根据ip地址反向查找主机名称的方法
Apr 29 Python
使用Python3制作TCP端口扫描器
Apr 17 Python
python使用selenium实现批量文件下载
Mar 11 Python
python制作抖音代码舞
Apr 07 Python
python全栈知识点总结
Jul 01 Python
python如何从文件读取数据及解析
Sep 19 Python
python实现的Iou与Giou代码
Jan 18 Python
Python的pygame安装教程详解
Feb 10 Python
利用Tensorboard绘制网络识别准确率和loss曲线实例
Feb 15 Python
Python爬虫爬取糗事百科段子实例分享
Jul 31 Python
详解利用python识别图片中的条码(pyzbar)及条码图片矫正和增强
Nov 17 Python
python抢购软件/插件/脚本附完整源码
Mar 04 Python
Python连接Impala实现步骤解析
Aug 04 #Python
python利用蒙版抠图(使用PIL.Image和cv2)输出透明背景图
Aug 04 #Python
Python如何给函数库增加日志功能
Aug 04 #Python
pycharm导入源码的具体步骤
Aug 04 #Python
python根据用户需求输入想爬取的内容及页数爬取图片方法详解
Aug 03 #Python
Python 如何调试程序崩溃错误
Aug 03 #Python
Python 捕获代码中所有异常的方法
Aug 03 #Python
You might like
PHP中的float类型使用说明
2010/07/27 PHP
php去除HTML标签实例
2013/11/06 PHP
PHP 匿名函数与注意事项详细介绍
2016/11/26 PHP
thinkPHP框架中执行事务的方法示例
2018/05/31 PHP
php压缩文件夹最新版
2018/07/18 PHP
PHP PDOStatement::setFetchMode讲解
2019/02/03 PHP
javascript attachEvent和addEventListener使用方法
2009/03/19 Javascript
超实用的JavaScript表单代码段
2016/02/26 Javascript
基于javascript编写简单日历
2016/05/02 Javascript
使用AJAX实现Web页面进度条的实例分享
2016/05/06 Javascript
JS实现“隐藏与显示”功能(多种方法)
2016/11/24 Javascript
JS+CSS实现网页加载中的动画效果
2017/10/27 Javascript
vue 组件中slot插口的具体用法
2018/04/03 Javascript
vue 中filter的多种用法
2018/04/26 Javascript
JS中使用react-tooltip插件实现鼠标悬浮显示框
2019/05/15 Javascript
40行代码把Vue3的响应式集成进React做状态管理
2020/05/20 Javascript
[02:14]2016国际邀请赛中国区预选赛Ehome晋级之路
2016/07/01 DOTA
Python自动化运维和部署项目工具Fabric使用实例
2016/09/18 Python
Python实现将doc转化pdf格式文档的方法
2018/01/19 Python
opencv python 图像轮廓/检测轮廓/绘制轮廓的方法
2019/07/03 Python
关于python字符串方法分类详解
2019/08/20 Python
pytorch实现对输入超过三通道的数据进行训练
2020/01/15 Python
基于Python的OCR实现示例
2020/04/03 Python
德国家具在线:Fashion For Home
2017/03/11 全球购物
选购国际女性时装设计师品牌:IFCHIC(支持中文)
2018/04/12 全球购物
初一生物教学反思
2014/01/18 职场文书
优秀工会工作者事迹材料
2014/06/02 职场文书
带香烟到学校抽的检讨书
2014/09/25 职场文书
大学生违纪检讨书300字
2014/10/25 职场文书
信访维稳工作汇报
2014/10/27 职场文书
2014年护理工作总结范文
2014/11/14 职场文书
2014年党风建设工作总结
2014/11/19 职场文书
母亲节主题班会
2015/08/14 职场文书
2015教师个人师德工作总结
2015/10/23 职场文书
如何用JavaScript检测当前浏览器是无头浏览器
2021/04/27 Javascript
JAVA SpringMVC实现自定义拦截器
2022/03/16 Python