11-Python 科学计算_绘图篇(matplotlib)

课程概要:
  1、matplotlib库的使用介绍
  2、mpl_toolkits 库的使用介绍
  3、mpl_toolkits 库的使用介绍(二)


1、matplotlib 库的使用介绍

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0,10,1000)
y = np.sin(x)
z = np.cos(x)
#   配置
plt.figure(figsize=(8,4))       #   框的大小
plt.plot(x,y,label='$sin(x)$')
plt.plot(x,z,'b--',label='$cos(x)$')        #   蓝色虚线
plt.xlabel("Time(s)")
plt.ylabel("")
plt.title("matplotlib")
plt.ylim(-1.2, 1.2)
plt.legend()                        #   显示为一个样式
plt.show()

fig = plt.gcf()                         #   获得当前图标的对象
ax = plt.gca()                      #   获得子图的对象
print fig
print ax
 
>>> 
Figure(640x480)
Axes(0.125,0.1;0.775x0.8)

多轴绘图

#   多轴绘图
#   subplot(numRows, numCols, plotNum)

import matplotlib.pyplot as plt

for idx, color in enumerate("rgbyck"):
    plt.subplot(320+idx+1, axisbg=color)

plt.show()
import numpy as np
import matplotlib.pyplot as plt

w = np.linspace(0.1, 1000, 1000)
p = np.abs(1/(1+0.1j*w))

plt.subplot(221)
plt.plot(w, p, linewidth=2)     #   算术坐标系
plt.ylim(0, 1.5)

plt.subplot(222)
plt.semilogx(w, p, linewidth=2)     #   x 对数坐标系
plt.ylim(0, 1.5)

plt.subplot(223)
plt.semilogy(w, p, linewidth=2)     #   y 对数坐标系
plt.ylim(0, 1.5)

plt.subplot(224)
plt.loglog(w, p, linewidth=2)           #   对数坐标系
plt.ylim(0, 1.5)

plt.show()
#   1.txt的文本
>>> data
array([[  0.,  10.,  20.,  30.,  40.],
       [ 10.,  23.,  33.,  43.,  53.],
       [ 20.,  83.,  23.,  55.,  33.],
       [ 30.,  93.,  44.,  22.,  55.],
       [ 40.,  72.,  33.,  44.,  66.]])
import numpy as np
import matplotlib.pyplot as plt

data = np.loadtxt(r"D:\1.txt")
width = (data[1, 0] - data[0, 0])*0.4       #   柱形的宽带为4

#   data[:, 0]:所有行数据
#   data[:, 1]:所有列数据    
plt.figure()                        
plt.bar(data[:, 0] - width, data[:, 1], width, label='person')  
plt.xlim(-width, 40)                        #   x 的取值区间
plt.xlabel("Age")
plt.ylabel("Num")

plt.legend()
plt.show()
import numpy as np
import matplotlib.pyplot as plt

plt.figure()
x = np.random.rand(100)
y = np.random.rand(100) 
#   marker:绘制点的形状和大小,5代表五边形,1是大小        
#      s的默认值是20
plt.scatter(x, y, s=x*1000, c=y, marker=(5,1), lw=2, facecolor='none')  
#   marker:绘制点的形状和大小    lw:linewidth    facecolor:颜色
plt.xlim(0, 1)  #  c:cmap不是color,cmap绘制出来是彩图(不同颜色)
plt.ylim(0, 1)

plt.show()

2、mpl_toolkits 库使用介绍(一)

3D图

#   3D图     
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
plt.show()

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure()
ax = fig.gca(projection='3d')       #   projection='3d' 已经隐性调用了Axes3D

#   ax = Axes3D(fig)            #   可以加上也可以不加
th = np.linspace(-4 * np.pi, 4 * np.pi, 100)
z = np.linspace(-2, 2, 100)
r = z ** 2 + 1
x = r * np.sin(th)
y = r * np.cos(th)

ax.plot(x, y, z, label='hello')     #   立体的
ax.legend()
plt.show()
ax.plot(x, y, label='hello')        #   平面的

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D 

def randrange(n, vmin, vmax):
    return (vmax-vmin)*np.random.rand(n) + vmin

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

n = 100
for c, m, zl, zh in [('r', 'o', -50, -25), ('b', '^', -30, -5)]:
    xs = randrange(n, 23, 32)
    ys = randrange(n, 0, 100)
    zs = randrange(n, zl, zh)

    ax.scatter(xs, ys, zs, c=c, marker=m)

ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')

plt.show()

轮廓图

#   轮廓图

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d
from matplotlib import cm

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

X, Y, Z = axes3d.get_test_data(0.05)        #   生成一系列的测试数据
cset = ax.contour(X, Y, Z,cmap=cm.coolwarm) #   contour:生成轮廓图
ax.clabel(cset, fontsize=9, inline=1)
plt.show()
#   修改
cset = ax.contour(X, Y, Z,extend3d=True, cmap=cm.coolwarm)      #   颜色的填充

3、mpl_toolkits 库使用介绍(二)

3D柱形图

#   3D柱形图
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

for c, z in zip(['r', 'g', 'b', 'y'], (30, 20, 10, 0)):
    x = np.arange(20)
    y = np.random.rand(20)
    cs = [c] * len(x)
    cs[0] = 'c'
    ax.bar(x, y, zs=z, zdir='y', color = cs)

ax.set_xlabel('x')

plt.show()

绘制曲面

#   绘制曲面

import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

u = np.linspace(0, 2*np.pi, 100)
v = np.linspace(0, np.pi, 100)
x = 10 * np.outer(np.cos(u), np.sin(v))
y = 10 * np.outer(np.sin(u), np.sin(v))
z = 10 * np.outer(np.ones(np.size(u)), np.cos(v))

ax.plot_surface(x, y, z, rstride=4, cstride=4, color='b')

绘制文字

#   绘制文字

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.gca(projection='3d')

zdirs = (None, 'x', 'y', 'z', (1, 1, 0), (1, 1, 1))
xs = (1, 4, 4, 9, 4, 1)
ys = (2, 5, 8, 10, 1, 2)
zs = (10,3, 8, 9, 1, 8)

for zdir, x, y, z in zip(zdirs, xs, ys, zs):
    label = '(%d, %d, %d), dir=%s' % (x, y, z, zdir)
    ax.text(x, y, z, label, zdir)

ax.text(9, 0, 0, 'red', color='red')
ax.text2D(0.05, 0.95, "20 text", transform=ax.transAxes)

ax.set_xlim3d(0,10)
ax.set_ylim3d(0,10)
ax.set_zlim3d(0,10)

ax.set_xlabel('X axis')
ax.set_ylabel('Y axis')
ax.set_zlabel('Z axis')

plt.show()
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容

  • Matplotlib 入门教程 来源:Introduction to Matplotlib and basic l...
    布客飞龙阅读 31,765评论 5 162
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,454评论 25 707
  • Matplotlib 也可以绘制 3D 图像,与二维图像不同的是,绘制三维图像主要通过 mplot3d 模块实现。...
    听城阅读 5,707评论 0 3
  • 我是一个八零后。 你可以解读出“独生子女的一代”,也可以读出“垮掉的一代”。 但不可否认的是,我们即将成为“主人翁...
    少家说阅读 162评论 2 2
  • 真货漆皮淡淡的柠檬香味,菱格远看平整,近看饱满,加上活灵活现的侧围,塑造一个这样的尤物出来,着实美到了我,黑金搭配...
    eccc524c91ac阅读 767评论 0 0