前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >matlibplot绘制各种图形

matlibplot绘制各种图形

作者头像
公众号guangcity
发布2019-09-20 14:33:15
1.5K0
发布2019-09-20 14:33:15
举报
文章被收录于专栏:光城(guangcity)

matlibplot绘制各种图形

0.导语1.预备知识1.1 np.arange()1.2 numpy.random.uniform()1.3 zip()2.bar绘制3.散点图4.3D图5.参考文章6.作者的话

0.导语

上次出了一篇matlibplot基础篇,本篇来主要学习matlibplot的各种图绘制!下面一起来嗨吧!!!

1.预备知识

1.1 np.arange()

np.arange()返回的是numpy.ndarray() 三个参数(first,last,step) last必须提供,默认first从0开始,step为1, 生成的ndarray(),只包含first,不包含last

代码语言:javascript
复制
np.arange(3.0)
Out[6]: array([0., 1., 2.])
np.arange(1,3.0,.5)
Out[7]: array([1. , 1.5, 2. , 2.5])

1.2 numpy.random.uniform()

函数原型:numpy.random.uniform(low,high,size) 功能:从一个均匀分布[low,high)中随机采样,注意定义域是左闭右开,即包含low,不包含high. 参数介绍: low: 采样下界,float类型,默认值为0; high: 采样上界,float类型,默认值为1; size: 输出样本数目,为int或元组(tuple)类型,例如,size=(m,n,k), 则输出mnk个样本,缺省时输出1个值。 返回值:ndarray类型,其形状和参数size中描述一致。 这里顺便说下ndarray类型,表示一个N维数组对象,其有一个shape(表维度大小)和dtype(说明数组数据类型的对象), 使用zeros和ones函数可以创建数据全0或全1的数组,原型: numpy.ones(shape,dtype=None,order='C'), 其中,shape表数组形状(m*n),dtype表类型,order表是以C还是fortran形式存放数据。

1.3 zip()

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。 如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。 zip([iterable, …]) iterabl -- 一个或多个迭代器; 返回值 返回元组列表.

代码语言:javascript
复制
>>>a = [1,2,3]
>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> zipped = zip(a,b)     # 打包为元组的列表
[(1, 4), (2, 5), (3, 6)]
>>> zip(a,c)              # 元素个数与最短的列表一致
[(1, 4), (2, 5), (3, 6)]
>>> zip(*zipped)          # 与 zip 相反,可理解为解压,返回二维矩阵式
[(1, 2, 3), (4, 5, 6)]

2.bar绘制

实现

代码语言:javascript
复制
import matplotlib.pyplot as plt
import numpy as np

# 生成n个柱状图
n = 12

X = np.arange(n) # [0,12)范围步长为1的array
'''
print(X)
print(X/float(n))
print(1-X/float(n))
'''
Y1 = (1-X/float(n)) * np.random.uniform(0.5, 1.0, n)
Y2 = (1-X/float(n)) * np.random.uniform(0.5, 1.0, n)

plt.bar(X, +Y1, facecolor='#9999ff', edgecolor='white')
plt.bar(X, -Y2, facecolor='#ff9999', edgecolor='white')
for x,y in zip(X,Y1):
    # ha: horizontal alignment
    # va: vertical alignment
    plt.text(x, y, '%.2f' % y, ha='center', va='bottom')

for x,y in zip(X,Y2):
    # ha: horizontal alignment
    # va: vertical alignment
    plt.text(x, -y, '%.2f' % y, ha='center', va='top')

plt.xlim(-1,n)
plt.xticks(())
plt.ylim(-1.25, 1.25)
plt.yticks(())
plt.show()

输出

3.散点图

实现

代码语言:javascript
复制
import matplotlib.pyplot as plt
import numpy as np

n=1024
X=np.random.normal(0,1,n)
Y=np.random.normal(0,1,n)
T=np.arctan2(Y,X) # for color value
plt.scatter(X,Y,s=75,c=T,alpha=0.5)
plt.xlim(-1.5,1.5)
plt.ylim(-1.5,1.5)
plt.xticks(()) # 隐藏x轴内容
plt.yticks(()) # 隐藏y轴内容
plt.show()

输出

4.3D图

实现

代码语言:javascript
复制
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig=plt.figure()
ax=Axes3D(fig)
X=np.arange(-4, 4, 0.25)
Y = np.arange(-4, 4, 0.25)
X,Y=np.meshgrid(X,Y)
R=np.sqrt(X**2+Y**2)
# height value
Z=np.sin(R)
# rstride行跨,cstride列跨
ax.plot_surface(X,Y,Z,rstride=1,cstride=1,cmap=plt.get_cmap('rainbow'))
# 投影 offset表示把图形压缩到xoy面,z=-2的位置,zdir换成x,y类似
ax.contourf(X,Y,Z,zdir='z',offset=-2,cmap='rainbow')
ax.set_zlim(-2,2)
plt.show()

输出

5.参考文章

https://morvanzhou.github.io/tutorials/data-manipulation/plt/2-1-basic-usage/

6.作者的话

以上学习了matlibplot相关图的绘制,希望各位能够有所收获!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-12-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 光城 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • matlibplot绘制各种图形
    • 0.导语
      • 1.预备知识
        • 1.1 np.arange()
        • 1.2 numpy.random.uniform()
        • 1.3 zip()
      • 2.bar绘制
        • 3.散点图
          • 4.3D图
            • 5.参考文章
              • 6.作者的话
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档