11-Python 科學(xué)計(jì)算_繪圖篇(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)$')        #   藍(lán)色虛線
plt.xlabel("Time(s)")
plt.ylabel("")
plt.title("matplotlib")
plt.ylim(-1.2, 1.2)
plt.legend()                        #   顯示為一個樣式
plt.show()

fig = plt.gcf()                         #   獲得當(dāng)前圖標(biāo)的對象
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)     #   算術(shù)坐標(biāo)系
plt.ylim(0, 1.5)

plt.subplot(222)
plt.semilogx(w, p, linewidth=2)     #   x 對數(shù)坐標(biāo)系
plt.ylim(0, 1.5)

plt.subplot(223)
plt.semilogy(w, p, linewidth=2)     #   y 對數(shù)坐標(biāo)系
plt.ylim(0, 1.5)

plt.subplot(224)
plt.loglog(w, p, linewidth=2)           #   對數(shù)坐標(biāo)系
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]:所有行數(shù)據(jù)
#   data[:, 1]:所有列數(shù)據(jù)    
plt.figure()                        
plt.bar(data[:, 0] - width, data[:, 1], width, label='person')  
plt.xlim(-width, 40)                        #   x 的取值區(qū)間
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:繪制點(diǎn)的形狀和大小宗苍,5代表五邊形,1是大小        
#      s的默認(rèn)值是20
plt.scatter(x, y, s=x*1000, c=y, marker=(5,1), lw=2, facecolor='none')  
#   marker:繪制點(diǎn)的形狀和大小    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' 已經(jīng)隱性調(diào)用了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)        #   生成一系列的測試數(shù)據(jù)
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()
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末敞恋,一起剝皮案震驚了整個濱河市丽啡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌硬猫,老刑警劉巖补箍,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異啸蜜,居然都是意外死亡坑雅,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進(jìn)店門衬横,熙熙樓的掌柜王于貴愁眉苦臉地迎上來裹粤,“玉大人,你說我怎么就攤上這事蜂林∫K撸” “怎么了拇泣?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長矮锈。 經(jīng)常有香客問我霉翔,道長,這世上最難降的妖魔是什么苞笨? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任债朵,我火速辦了婚禮,結(jié)果婚禮上猫缭,老公的妹妹穿的比我還像新娘葱弟。我一直安慰自己,他們只是感情好猜丹,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著硅卢,像睡著了一般射窒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上将塑,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天脉顿,我揣著相機(jī)與錄音,去河邊找鬼点寥。 笑死艾疟,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的敢辩。 我是一名探鬼主播蔽莱,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼戚长!你這毒婦竟也來了盗冷?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤同廉,失蹤者是張志新(化名)和其女友劉穎仪糖,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體迫肖,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡锅劝,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蟆湖。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片故爵。...
    茶點(diǎn)故事閱讀 40,115評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖帐姻,靈堂內(nèi)的尸體忽然破棺而出稠集,到底是詐尸還是另有隱情奶段,我是刑警寧澤,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布剥纷,位于F島的核電站痹籍,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏晦鞋。R本人自食惡果不足惜蹲缠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望悠垛。 院中可真熱鬧线定,春花似錦、人聲如沸确买。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽湾趾。三九已至芭商,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間搀缠,已是汗流浹背铛楣。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留艺普,地道東北人簸州。 一個月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像歧譬,于是被迫代替她去往敵國和親岸浑。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Matplotlib 入門教程 來源:Introduction to Matplotlib and basic l...
    布客飛龍閱讀 31,798評論 5 162
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,178評論 25 707
  • Matplotlib 也可以繪制 3D 圖像缴罗,與二維圖像不同的是助琐,繪制三維圖像主要通過 mplot3d 模塊實(shí)現(xiàn)。...
    聽城閱讀 5,713評論 0 3
  • 我是一個八零后面氓。 你可以解讀出“獨(dú)生子女的一代”兵钮,也可以讀出“垮掉的一代”。 但不可否認(rèn)的是舌界,我們即將成為“主人翁...
    少家說閱讀 169評論 2 2
  • 真貨漆皮淡淡的檸檬香味掘譬,菱格遠(yuǎn)看平整,近看飽滿呻拌,加上活靈活現(xiàn)的側(cè)圍葱轩,塑造一個這樣的尤物出來,著實(shí)美到了我,黑金搭配...
    eccc524c91ac閱讀 783評論 0 0