一文帶你掌握Matplotlib圖形繪制
1. 2D 圖形繪制
1.2 曲線圖
在《Matplotlib快速入門》中,作為入門示例,我們已經(jīng)了解了曲線圖的繪制方法,為了完整起見,本節(jié)中我們首先簡(jiǎn)單回顧下,如何在使用 Matplotlib
繪制曲線圖,同時(shí)介紹多曲線圖等更復(fù)雜曲線圖的繪制。
1.2.1 簡(jiǎn)單曲線圖的繪制
在以下示例中,我們繪制曲線 c o s ( x ) cos(x) cos(x), x x x 在 [ 0 , 2 π ] [0, 2\pi] [0,2π] 區(qū)間內(nèi):
# cos_1.py import math import matplotlib.pyplot as plt scale = range(100) x = [(2 * math.pi * i) / len(scale) for i in scale] y = [math.cos(i) for i in x] plt.plot(x, y) plt.show()
我們已經(jīng)知道, Matplotlib
使用的數(shù)據(jù)可以有不同來源,接下來,我們以使用 Numpy
獲取的數(shù)據(jù)為例,繪制 [-10,10]
區(qū)間內(nèi)的曲線 y = x 3 + 5 x − 10 :
# plot_np.py import numpy as np import matplotlib.pyplot as plt x = np.linspace(-10, 10, 800) y = x ** 3 + 5 * x - 10 plt.plot(x, y) plt.show()
1.2.2 繪制多曲線圖
很多時(shí)候我們需要對(duì)比多組數(shù)據(jù),以發(fā)現(xiàn)數(shù)據(jù)間的異同,此時(shí)就需要在一張圖片上繪制多條曲線——多曲線圖,下圖展示了在同一圖片中繪制函數(shù) y = x y=x y=x、 y = x 2 y=x^2 y=x2, y = l o g e x y=log_ex y=loge?x 以及 y = s i n ( x ) y=sin(x) y=sin(x):
# plot_multi_curve.py import numpy as np import matplotlib.pyplot as plt x = np.linspace(0.1, 2 * np.pi, 100) y_1 = x y_2 = np.square(x) y_3 = np.log(x) y_4 = np.sin(x) plt.plot(x,y_1) plt.plot(x,y_2) plt.plot(x,y_3) plt.plot(x,y_4) plt.show()
Note:
一條曲線的繪制需要調(diào)用一次 plt.plot()
,而 plt.show()
只需調(diào)用一次。這種延遲呈現(xiàn)機(jī)制是 Matplotlib
的關(guān)鍵特性,我們可以在代碼中的任何地方調(diào)用繪圖函數(shù),但只有在調(diào)用 plt.show()
時(shí)才會(huì)渲染顯示圖形。為了更好的說明這種延遲呈現(xiàn)機(jī)制,我們編寫以下代碼:
# deferred_rendering.py import numpy as np import matplotlib.pyplot as plt def plot_func(x, y): x_s = x[1:] - y[:-1] y_s = y[1:] - x[:-1] plt.plot(x[1:], x_s / y_s) x = np.linspace(-5, 5, 200) y = np.exp(-x ** 2) plt.plot(x, y) plot_func(x, y) plt.show()
可以看到,盡管其中一個(gè) plt.plot()
是在 plot_func
函數(shù)中調(diào)用的,它對(duì)圖形的呈現(xiàn)沒有任何影響,因?yàn)?plt.plot()
只是聲明了我們要呈現(xiàn)的內(nèi)容,但還沒有執(zhí)行渲染。因此可以使用延遲呈現(xiàn)特性結(jié)合 for
循環(huán)、條件判斷等語法完成復(fù)雜圖形的繪制,同時(shí)也可以在同一張圖中組合不同類型的統(tǒng)計(jì)圖。
1.2.3 讀取數(shù)據(jù)文件繪制曲線圖
很多情況下數(shù)據(jù)都是存儲(chǔ)于文件中,因此,需要首先讀取文件中的數(shù)據(jù),再進(jìn)行繪制,說明起見,以 .txt
文件為例,其他諸如 Excel
、 CSV文件
等同樣可以進(jìn)行讀取,并用于可視化繪制。假設(shè)存在 data.txt
文件如下:
0 11 22 54 175 266 37
讀取數(shù)據(jù)和繪制的代碼如下:
# read_txt.py import matplotlib.pyplot as plt x, y = [], [] for line in open('data.txt', 'r'): values = [float(s) for s in line.split()] x.append(values[0]) y.append(values[1]) plt.plot(x, y) plt.show()
1.2 散點(diǎn)圖
當(dāng)繪制曲線圖時(shí),我們假設(shè)點(diǎn)與點(diǎn)之間存在序列關(guān)系。而散點(diǎn)圖是簡(jiǎn)單地繪制點(diǎn),它們之間并不存在連接。散點(diǎn)圖來為兩個(gè)序列中的每個(gè)相對(duì)應(yīng)的數(shù)據(jù)對(duì)在坐標(biāo)軸中對(duì)應(yīng)的位置畫一個(gè)點(diǎn)。
import numpy as np import matplotlib.pyplot as plt data = np.random.rand(1000, 2) plt.scatter(data[:,0], data[:,1]) plt.show()
可以看到,函數(shù) plt.scatter()
的調(diào)用方式與 plt.plot()
完全相同,分別將點(diǎn)的 x 和 y 坐標(biāo)序列作為輸入?yún)?shù)。
1.3 條形圖
條形圖具有豐富的表現(xiàn)形式,常見的類型包括單組條形圖,多組條形圖,堆積條形圖和對(duì)稱條形圖等。
1.3.1 單組條形圖
條形圖的每種表現(xiàn)形式都可以繪制成垂直條形圖或水平條形圖,以單組條形圖的兩種繪制方式為例。
(1) 垂直條形圖
import matplotlib.pyplot as plt data = [10., 20., 5., 15.] plt.bar(range(len(data)), data) plt.show()
plt.bar()
函數(shù)的作用是:接收兩個(gè)參數(shù),包括每個(gè)條形的 x
坐標(biāo)和每個(gè)條形的高度。通過使用可選參數(shù) width
, plt.bar()
還可以控制條形圖中條形的寬度:
import matplotlib.pyplot as plt data = [10., 20., 5., 15.] plt.bar(range(len(data)), data, width=0.5) plt.show()
(2) 水平條形圖
如果更喜歡水平條形外觀,就可以使用 plt.barh()
函數(shù),在用法方面與 plt.bar()
基本相同,但是修改條形寬度(或者在水平條形圖中應(yīng)該稱為高度),需要使用參數(shù) height
:
import matplotlib.pyplot as plt data = [10., 20., 5., 15.] plt.barh(range(len(data)), data, height=0.5) plt.show()
1.3.2 多組條形圖
當(dāng)需要比較不同年份相應(yīng)季度的銷量等此類需求時(shí),我們可能需要多組條形圖。
import numpy as np import matplotlib.pyplot as plt data = [[10., 20., 30., 20.],[40., 25., 53., 18.],[6., 22., 52., 19.]] x = np.arange(4) plt.bar(x + 0.00, data[0], color = 'b', width = 0.25) plt.bar(x + 0.25, data[1], color = 'g', width = 0.25) plt.bar(x + 0.50, data[2], color = 'r', width = 0.25) plt.show()
1.3.3 堆積條形圖
通過使用 plt.bar()
函數(shù)中的可選參數(shù),可以繪制堆積條形圖, plt.bar()
函數(shù)的可選參數(shù) bottom
允許指定條形圖的起始值。
import matplotlib.pyplot as plt y_1 = [3., 25., 45., 22.] y_2 = [6., 25., 50., 25.] x = range(4) plt.bar(x, y_1, color = 'b') plt.bar(x, y_2, color = 'r', bottom = y_1) plt.show()
可以結(jié)合 for
循環(huán),利用延遲呈現(xiàn)機(jī)制可以堆疊更多的條形:
import numpy as np import matplotlib.pyplot as plt data = np.array([[5., 30., 45., 22.], [5., 25., 50., 20.], [1., 2., 1., 1.]]) x = np.arange(data.shape[1]) for i in range(data.shape[0]): plt.bar(x, data[i], bottom = np.sum(data[:i], axis = 0)) plt.show()
1.3.4 對(duì)稱條形圖
例如,當(dāng)我們想要繪制不同年齡段的男性與女性數(shù)量的對(duì)比時(shí),一個(gè)簡(jiǎn)單且有用的技巧是對(duì)稱繪制兩個(gè)條形圖:
import numpy as np import matplotlib.pyplot as plt w_pop = np.array([5., 30., 45., 22.]) m_pop = np.array( [5., 25., 50., 20.]) x = np.arange(4) plt.barh(x, w_pop) plt.barh(x, -m_pop) plt.show()
圖中女性人口的條形圖照常繪制。然而,男性人口的條形圖的條形圖的條形圖向左延伸,而不是向右延伸??梢允褂脭?shù)據(jù)的負(fù)值來快速實(shí)現(xiàn)對(duì)稱條形圖的繪制。
1.4 餅圖
餅圖可以用于對(duì)比數(shù)量間的相對(duì)關(guān)系, plt.pie()
函數(shù)將一系列值作為輸入,將值傳遞給 Matplolib
,它就會(huì)自動(dòng)計(jì)算各個(gè)值在餅圖中的相對(duì)面積,并進(jìn)行繪制:
import matplotlib.pyplot as plt data = [10, 15, 30, 20] plt.pie(data) plt.show()
1.5 直方圖
直方圖是概率分布的圖形表示。事實(shí)上,直方圖只是一種特殊的條形圖。我們可以很容易地使用 Matplotlib
的條形圖函數(shù),并進(jìn)行一些統(tǒng)計(jì)運(yùn)算來生成直方圖。但是,鑒于直方圖的使用頻率非常高,因此 Matplotlib
提供了一個(gè)更加方便的函數(shù)—— plt.hist()
。 plt.hist()
函數(shù)的作用是:獲取一系列值作為輸入。值的范圍將被劃分為大小相等的范圍(默認(rèn)情況下數(shù)量為 10
),然后生成條形圖,一個(gè)范圍對(duì)應(yīng)一個(gè)條柱,一個(gè)條柱的高度是相應(yīng)范圍內(nèi)中的值的數(shù)量,條柱的數(shù)量由可選參數(shù) bins
確定。
import numpy as np import matplotlib.pyplot as plt x = np.random.randn(1024) plt.hist(x, bins = 20) plt.show()
1.6 箱形圖
箱形圖可以通過方便地顯示一組值的中位數(shù)、四分位數(shù)、最大值和最小值來比較值的分布。
import numpy as np import matplotlib.pyplot as plt data = np.random.randn(200) plt.boxplot(data) plt.show()
Tips:plt.boxplot()函數(shù)的作用是:獲取一組值,并自動(dòng)計(jì)算平均值、中位數(shù)和其他統(tǒng)計(jì)量。
箱形圖描述:
- 圖中黃線是分布的中位數(shù)。
- 方形箱框包括從下四分位數(shù)Q1到上四分位數(shù)Q3的50%的數(shù)據(jù)。
- 下盒須的下四分位延伸到1.5 (Q3-Q1)。
- 上盒須從上四分位延伸至1.5 (Q3-Q1)。
- 離盒須較遠(yuǎn)的數(shù)值用圓圈標(biāo)記。
要在單個(gè)圖形中繪制多個(gè)箱形圖,對(duì)每個(gè)箱形圖調(diào)用一次 plt.boxplot()
是不可行。它會(huì)將所有箱形圖畫在一起,形成一個(gè)混亂的、不可讀的圖形。如果想要到達(dá)符合要求的效果,只需在一次調(diào)用 plt.boxplot()
中,同時(shí)繪制多個(gè)箱形圖即可,如下所示:
import numpy as np import matplotlib.pyplot as plt data = np.random.randn(200, 6) plt.boxplot(data) plt.show()
2. 3D 圖形繪制
繪制 3D
圖形的函數(shù)使用方式與 2D
非常相似,在上節(jié)中,我們已經(jīng)學(xué)習(xí)了一系列 2D
圖形的繪制,接下里,我們?cè)趫D中再添加一個(gè)維度以展示更多信息。
2.1 3D 散點(diǎn)圖
3D
散點(diǎn)圖的繪制方式與 2D
散點(diǎn)圖基本相同。
import numpy as np from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt # Dataset generation a, b, c = 10., 28., 8. / 3. def lorenz_map(x, dt = 1e-2): x_dt = np.array([a * (x[1] - x[0]), x[0] * (b - x[2]) - x[1], x[0] * x[1] - c * x[2]]) return x + dt * x_dt points = np.zeros((2000, 3)) x = np.array([.1, .0, .0]) for i in range(points.shape[0]): points[i], x = x, lorenz_map(x) # Plotting fig = plt.figure() ax = fig.gca(projection = '3d') ax.set_xlabel('X axis') ax.set_ylabel('Y axis') ax.set_zlabel('Z axis') ax.set_title('Lorenz Attractor a=%0.2f b=%0.2f c=%0.2f' % (a, b, c)) ax.scatter(points[:, 0], points[:, 1],points[:, 2], zdir = 'z', c = 'c') plt.show()
需要注意的是,在彈出的交互式繪圖窗口中,按住鼠標(biāo)左鍵移動(dòng)鼠標(biāo)可以旋轉(zhuǎn)查看三維圖形。接下來,我們?cè)敿?xì)講解如何使用 Matplotlib
進(jìn)行三維繪圖,我們首先需要導(dǎo)入 Matplotlib
的三維擴(kuò)展 Axes3D
:
from mpl_toolkits.mplot3d import Axes3D
對(duì)于三維繪圖,需要?jiǎng)?chuàng)建一個(gè) Figure
實(shí)例并附加一個(gè) Axes3D
實(shí)例:
fig = plt.figure() ax = fig.gca(projection='3d')
之后,三維散點(diǎn)圖的繪制方式與二維散點(diǎn)圖完全相同:
ax.scatter(points[:, 0], points[:, 1],points[:, 2], zdir = 'z', c = 'c')
需要注意的是,繪制 3D
散點(diǎn)圖需要調(diào)用 Axes3D
實(shí)例的 scatter()
方法,而非 plt
中的 scatter
方法。只有 Axes3D
中的 scatter()
方法才能解釋三維數(shù)據(jù)。同時(shí) 2D
統(tǒng)計(jì)圖中的注釋也可以在 3D
圖中使用,例如 set_title()
、 set_xlabel()
、 set_ylabel()
和 set_zlabel()
等。
2.2 3D曲線圖
與在 3D
空間中繪制散點(diǎn)圖類似,繪制 3D
曲線圖同樣需要設(shè)置一個(gè) Axes3D
實(shí)例,然后調(diào)用其 plot()
方法:
import numpy as np from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt # Dataset generation a, b, c = 10., 28., 8. / 3. def lorenz_map(x, dt = 1e-2): x_dt = np.array([a * (x[1] - x[0]), x[0] * (b - x[2]) - x[1], x[0] * x[1] - c * x[2]]) return x + dt * x_dt points = np.zeros((8000, 3)) x = np.array([.1, .0, .0]) for i in range(points.shape[0]): points[i], x = x, lorenz_map(x) # Plotting fig = plt.figure() ax = fig.gca(projection = '3d') ax.set_xlabel('X axis') ax.set_ylabel('Y axis') ax.set_zlabel('Z axis') ax.set_title('Lorenz Attractor a=%0.2f b=%0.2f c=%0.2f' % (a, b, c)) ax.plot(points[:, 0], points[:, 1], points[:, 2], c = 'c') plt.show()
2.3 3D標(biāo)量場(chǎng)
到目前為止,我們看到的 3D
繪圖方式類似與相應(yīng)的 2D
繪圖方式,但也有許多特有的三維繪圖功能,例如將二維標(biāo)量場(chǎng)繪制為 3D
曲面, plot_surface()
方法使用 x x x、 y y y 和 z z z 三個(gè)序列將標(biāo)量場(chǎng)顯示為三維曲面:
import numpy as np from matplotlib import cm from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt x = np.linspace(-3, 3, 256) y = np.linspace(-3, 3, 256) x_grid, y_grid = np.meshgrid(x, y) z = np.sinc(np.sqrt(x_grid ** 2 + y_grid ** 2)) fig = plt.figure() ax = fig.gca(projection = '3d') ax.plot_surface(x_grid, y_grid, z, cmap=cm.viridis) plt.show()
可以看到曲面上線條帶有顯著的色彩標(biāo)識(shí),如果不希望看到三維曲面上顯示的曲線色彩,可以使用 plot_surface()
的附加可選參數(shù):
ax.plot_surface(x_grid, y_grid, z, cmap=cm.viridis, linewidth=0, antialiased=False)
同樣,我們也可以僅保持曲線色彩,而曲面不使用其他顏色,這也可以通過 plot_surface()
的可選參數(shù)來完成:
import numpy as np from matplotlib import cm from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt x = np.linspace(-3, 3, 256) y = np.linspace(-3, 3, 256) x_grid, y_grid = np.meshgrid(x, y) z = np.sinc(np.sqrt(x_grid ** 2 + y_grid ** 2)) fig = plt.figure() ax = fig.gca(projection = '3d') ax.plot_surface(x_grid, y_grid, z, edgecolor='b',color='w') plt.show()
而如果我們希望消除曲面,而僅使用線框進(jìn)行繪制,可以使用 plot_wireframe()
函數(shù), plot_wireframe()
參數(shù)與 plot_surface()
相同,使用兩個(gè)可選參數(shù) rstride
和 cstride
用于令 Matplotlib
跳過 x x x 和 y y y 軸上指定數(shù)量的坐標(biāo),用于減少曲線的密度:
ax.plot_wireframe(x_grid, y_grid, z, cstride=10, rstride=10,color='c')
2.4 繪制3D曲面
在前述方法中,使用 plot_surface()
來繪制標(biāo)量:即 f(x, y)=z
形式的函數(shù),但 Matplotlib
也能夠使用更通用的方式繪制三維曲面:
import numpy as np from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt # Generate torus mesh angle = np.linspace(0, 2 * np.pi, 32) theta, phi = np.meshgrid(angle, angle) r, r_w = .25, 1. x = (r_w + r * np.cos(phi)) * np.cos(theta) y = (r_w + r * np.cos(phi)) * np.sin(theta) z = r * np.sin(phi) # Display the mesh fig = plt.figure() ax = fig.gca(projection = '3d') ax.set_xlim3d(-1, 1) ax.set_ylim3d(-1, 1) ax.set_zlim3d(-1, 1) ax.plot_surface(x, y, z, color = 'c', edgecolor='m', rstride = 2, cstride = 2) plt.show()
同樣可以使用 plot_wireframe()
替換對(duì) plot_surface()
的調(diào)用,以便獲得圓環(huán)的線框視圖:
ax.plot_wireframe(x, y, z, edgecolor='c', rstride = 2, cstride = 1)
2.5 在3D坐標(biāo)軸中繪制2D圖形
注釋三維圖形的一種有效方法是使用二維圖形:
import numpy as np from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt x = np.linspace(-3, 3, 256) y = np.linspace(-3, 3, 256) x_grid, y_grid = np.meshgrid(x, y) z = np.exp(-(x_grid ** 2 + y_grid ** 2)) u = np.exp(-(x ** 2)) fig = plt.figure() ax = fig.gca(projection = '3d') ax.set_zlim3d(0, 3) ax.plot(x, u, zs=3, zdir='y', lw = 2, color = 'm') ax.plot(x, u, zs=-3, zdir='x', lw = 2., color = 'c') ax.plot_surface(x_grid, y_grid, z, color = 'b') plt.show()
Axes3D
實(shí)例同樣支持常用的二維渲染命令,如 plot()
:
ax.plot(x, u, zs=3, zdir='y', lw = 2, color = 'm')
Axes3D 實(shí)例對(duì) plot()
的調(diào)用有兩個(gè)新的可選參數(shù):
zdir :用于決定在哪個(gè)平面上繪制2D繪圖,可選值包括 x、y 或 z;
zs :用于決定平面的偏移。
因此,要將二維圖形嵌入到三維圖形中,只需將二維原語用于 Axes3D 實(shí)例,同時(shí)使用可選參數(shù),zdir 和 zs,來放置所需渲染圖形平面。接下來,讓我們實(shí)際查看下在 3D 空間中堆疊 2D 條形圖的示例:
import numpy as np from matplotlib import cm import matplotlib.colors as col from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt # Data generation alpha = 1. / np.linspace(1, 8, 5) t = np.linspace(0, 5, 16) t_grid, a_grid = np.meshgrid(t, alpha) data = np.exp(-t_grid * a_grid) # Plotting fig = plt.figure() ax = fig.gca(projection = '3d') cmap = cm.ScalarMappable(col.Normalize(0, len(alpha)), cm.viridis) for i, row in enumerate(data): ax.bar(4 * t, row, zs=i, zdir='y', alpha=0.8, color=cmap.to_rgba(i)) plt.show()
2.6 3D 柱狀圖
最后,我們來介紹 3D
柱狀圖的繪制。
import numpy as np from matplotlib import cm import matplotlib.colors as col from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt # Data generation alpha = np.linspace(1, 8, 5) t = np.linspace(0, 5, 16) t_grid, a_grid = np.meshgrid(t, alpha) data = np.exp(-t_grid * (1. / a_grid)) # Plotting fig = plt.figure() ax = fig.gca(projection = '3d') xi = t_grid.flatten() yi = a_grid.flatten() zi = np.zeros(data.size) dx = .30 * np.ones(data.size) dy = .30 * np.ones(data.size) dz = data.flatten() ax.set_xlabel('T') ax.set_ylabel('Alpha') ax.bar3d(xi, yi, zi, dx, dy, dz, color = 'c') plt.show()
3D
柱體以網(wǎng)格布局定位, bar3d()
方法接受六個(gè)必需參數(shù)作為輸入。前三個(gè)參數(shù)是每個(gè)柱體下端的 x
、 y
和 z
坐標(biāo):
xi = t_grid.flatten() yi = a_grid.flatten() zi = np.zeros(data.size)
bar3d()
方法將坐標(biāo)列表作為輸入,而不是網(wǎng)格坐標(biāo),因此需要對(duì)矩陣 a_grid
和 t_grid
調(diào)用flatten方法。 bar3d()
方法的另外三個(gè)必需參數(shù)是每個(gè)柱體在每個(gè)維度的值。這里,柱狀圖的高度取自數(shù)據(jù)矩陣。柱形寬度和深度設(shè)置為 0.30
:
dx = .30 * np.ones(data.size) dy = .30 * np.ones(data.size) dz = data.flatten()
相關(guān)鏈接
總結(jié)
到此這篇關(guān)于Matplotlib圖形繪制的文章就介紹到這了,更多相關(guān)Matplotlib圖形繪制內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python計(jì)算不規(guī)則圖形面積算法實(shí)現(xiàn)解析
這篇文章主要介紹了Python計(jì)算不規(guī)則圖形面積算法實(shí)現(xiàn)解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11Python?函數(shù)參數(shù)11個(gè)案例分享
大家好,今天給大家分享一下明哥整理的一篇?Python?參數(shù)的內(nèi)容,內(nèi)容非常的干,全文通過案例的形式來理解知識(shí)點(diǎn),自認(rèn)為比網(wǎng)上?80%?的文章講的都要明白,如果你是入門不久的?python?新手,相信本篇文章應(yīng)該對(duì)你會(huì)有不小的幫助,需要的朋友可以參考下2023-02-02將Django項(xiàng)目遷移到linux系統(tǒng)的詳細(xì)步驟
這篇文章主要介紹了將Django項(xiàng)目遷移到linux系統(tǒng)的詳細(xì)步驟,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03python中Flask框架簡(jiǎn)單入門實(shí)例
這篇文章主要介紹了python中Flask框架簡(jiǎn)單入門實(shí)例,以一個(gè)hello程序簡(jiǎn)單分析了Flask框架的使用技巧,需要的朋友可以參考下2015-03-03Python BeautifulSoup中文亂碼問題的2種解決方法
這篇文章主要介紹了Python BeautifulSoup中文亂碼問題的2種解決方法,需要的朋友可以參考下2014-04-04用Python和MD5實(shí)現(xiàn)網(wǎng)站掛馬檢測(cè)程序
系統(tǒng)管理員通常從svn/git中檢索代碼,部署站點(diǎn)后通常首先會(huì)生成該站點(diǎn)所有文件的MD5值,如果上線后網(wǎng)站頁面內(nèi)容被篡改(如掛馬)等,可以比對(duì)之前生成MD5值快速查找去那些文件被更改,為了使系統(tǒng)管理員第一時(shí)間發(fā)現(xiàn),可結(jié)合crontab或nagios等工具2014-03-03python 實(shí)現(xiàn)仿微信聊天時(shí)間格式化顯示的代碼
這篇文章主要介紹了python 實(shí)現(xiàn)仿微信聊天時(shí)間格式化顯示,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2020-04-04基于python實(shí)現(xiàn)在excel中讀取與生成隨機(jī)數(shù)寫入excel中
最近接個(gè)項(xiàng)目,項(xiàng)目要求是這樣的:在一份已知的excel表格中讀取學(xué)生的學(xué)號(hào)與姓名,再將這些數(shù)據(jù)放到新的excel表中的第一列與第二列,最后再生成隨機(jī)數(shù)作為學(xué)生的考試成績(jī),具體實(shí)現(xiàn)代碼大家參考下本文2018-01-01python中enumerate函數(shù)遍歷元素用法分析
這篇文章主要介紹了python中enumerate函數(shù)遍歷元素用法,結(jié)合實(shí)例形式分析了enumerate函數(shù)遍歷元素的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-03-03