1.創(chuàng)建一個(gè)2行1列的繪圖區(qū)并在第1行第1列繪制函數(shù)f(x)=x2 的曲線圖(x的取值范圍[-1,1]),在第2行第1列繪制函數(shù)f(x)=1/x的曲線圖(x的取值范圍[0,1]),效果如圖2.9.1所示。
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.subplot(211,title='平方曲線')
x = np.linspace(-1, 1)
y = x**2
plt.ylim(0, 1)
plt.plot(x, y)
plt.subplot(212, title='倒數(shù)曲線')
x = np.linspace(0, 1)
y = 1/x
plt.xlim(0.05, 0.95)
plt.ylim(0, 10)
plt.plot(x, y)
plt.subplots_adjust(hspace = 0.5)
plt.show()
2.調(diào)用scatter函數(shù)繪制正弦函數(shù)的曲線,請(qǐng)?jiān)谇€中添加一個(gè)表示XY的軸線,并在X軸方向輸出刻度標(biāo)記文本,效果如圖2.9.2所示。 提示:利用plot函數(shù)繪制直線,然后在合適位置顯示標(biāo)記字符。
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']
x = np.linspace(-np.pi,np.pi,63)
y = np.sin(x)
plt.xlim(-4,4)
plt.ylim(-1.25,1.25)
colors = [plt.cm.tab10(i%10/10.0) for i in range(len(x))]
for i in range(len(x)):
plt.scatter(x[i],y[i],color=colors[i],marker='*')
plt.title('Sin函數(shù)曲線')
plt.plot([-4,4],[0,0],'b')
plt.plot([0,0],[-1.25,1.25],color='orange')
plt.text(0.1,1.1,'Y')
plt.text(-3.4,-0.1,'-pi')
plt.text(3.3,-0.1,'pi')
plt.text(0.2,-0.1,'0')
plt.text(3.8,-0.1,'X')
plt.show()
3.調(diào)用bar()函數(shù)繪制教材部分例8.6中的圖像直方圖效果,圖像文件可以自己任意指定。
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image
im = np.array(Image.open(r"lena.png"))
n = int(im.size/3)
hd = [0]*n
row = im.shape[0]
col = im.shape[1]
for i in range(row):
for j in range(col):
v = im[i,j,0]*0.299+im[i,j,1]*0.587+im[i,j,2]*0.114
hd[i*row+j] = v
plt.hist(hd,256,color='k')
plt.show()
4.繪制一個(gè)心形圖案, 參考數(shù)學(xué)函數(shù)為ρ=a(1-sinθ) (θ的取值范圍[0,2?]),x=pcosθ,y=psinθ,在直角坐標(biāo)系上的繪制圖案效果如圖2.9.3(a)所示,在極坐標(biāo)中的繪制效果如圖2.9.3(b)所示。 提示:極坐標(biāo)繪制函數(shù)參考格式:plt.polar(theta,p)
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif']=['SimHei']
theta = np.linspace(0,2*np.pi)
a = 1
p = a*(1-np.sin(theta))
plt.polar(theta,p)
plt.show()
x = p*np.cos(theta)
y = p*np.sin(theta)
plt.plot(x,y,color='r')
plt.title('心形曲線-直角坐標(biāo)系')
plt.show()
5. 繪制一個(gè)餅圖,顯示你每個(gè)月各項(xiàng)消費(fèi)支出的比例,消費(fèi)支出主要包括:學(xué)習(xí)用品、日常用品、伙食費(fèi)、通訊費(fèi)、娛樂(lè)費(fèi)和其他開(kāi)支。?
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
persent = [0.08,0.23,0.45,0.05,0.15,0.04]
labels = ['學(xué)習(xí)用品','日常用品','伙食費(fèi)','通訊費(fèi)','娛樂(lè)費(fèi)','其他開(kāi)支']
plt.pie(persent,autopct="%.1f%%",labels=labels)
plt.title('每月各項(xiàng)消費(fèi)支出比例')
plt.show()
6.讀取“三國(guó)人名匯總.txt”中的人物名字,讀取“三國(guó)演義.txt”的全部?jī)?nèi)容,先統(tǒng)計(jì)所有人物的名字在書(shū)本中出現(xiàn)的次數(shù),并對(duì)出現(xiàn)次數(shù)超過(guò)100次的人物繪制一個(gè)柱狀圖,然后根據(jù)人物的詞頻大小繪制一個(gè)三國(guó)人名的詞云圖,效果如圖2.9.4所示。(數(shù)據(jù)文件下載鏈接:https://pan.baidu.com/s/1b81lMIx3In-V64vs7bsHkw,提取碼:jg41)文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-598451.html
import matplotlib.pyplot as plt
import jieba
from wordcloud import WordCloud
from PIL import Image
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']
fp1 = open(r'三國(guó)人名匯總.txt',"r",encoding="ANSI")
fp2 = open(r'三國(guó)演義.txt',"r",encoding="ANSI")
lines = fp1.readlines()
names = []
num = []
for line in lines:
line = line.strip('\n')
line = line.split(" ")
for name in line:
names.append(name)
f = fp2.read()
book = jieba.lcut(f)
for i in names:
n = 0
for j in book:
if i==j:
n = n+1
num.append(n)
m = []
l = []
for k in range(len(num)):
if num[k]>100:
m.append(names[k])
l.append(num[k])
plt.bar(m,l)
plt.show()
words = " ".join(names)
mask = np.array(Image.open(r"sg.png"))
wordcloud = WordCloud(font_path='C:/Windows/Fonts/simhei.ttf',
prefer_horizontal=0.99,
mask=mask,
background_color="white",
max_words=100,
max_font_size=30).generate(words)
plt.imshow(wordcloud)
fp1.close()
fp2.close()
7.神經(jīng)網(wǎng)絡(luò)模型在訓(xùn)練過(guò)程中將顯示每一個(gè)訓(xùn)練回合所用的時(shí)間、訓(xùn)練集上的損失值、訓(xùn)練集上的準(zhǔn)確率、驗(yàn)證集上的損失值和驗(yàn)證集上的準(zhǔn)確率,把這些數(shù)據(jù)保存到變量history,訓(xùn)練結(jié)束后對(duì)這些數(shù)據(jù)進(jìn)行分析,圖2.9.5顯示了前面5個(gè)回合的訓(xùn)練數(shù)據(jù)。 ?圖2.9.5 神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練過(guò)程 現(xiàn)將50個(gè)訓(xùn)練回合產(chǎn)生的數(shù)據(jù)寫(xiě)入到文件Epoch.txt中。用記事本中打開(kāi)Epoch.txt,前面5行數(shù)據(jù)的顯示結(jié)果如圖2.9.6所示,其中第1列為訓(xùn)練集的損失值,第2列為訓(xùn)練集的準(zhǔn)確率,第3列為驗(yàn)證集上的損失值,第4列為驗(yàn)證集上的準(zhǔn)確率。 ?131 ?圖2.9.6 訓(xùn)練產(chǎn)生的部分?jǐn)?shù)據(jù) 下面請(qǐng)讀入Epoch.txt文件中的數(shù)據(jù),可視化顯示訓(xùn)練集與驗(yàn)證集的準(zhǔn)確率及損失值的變化趨勢(shì),可視化顯示的結(jié)果將有助于判別本次訓(xùn)練的神經(jīng)網(wǎng)絡(luò)模型其擬合情況,輸出結(jié)果如圖2.9.7所示。(Epoch.txt文件的下載鏈接為https://pan.baidu.com/s/1KukeCMtSkAhzgDsRVbtwzg,提取碼為:iqjy)?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-598451.html
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']
fp = open(r"epoch.txt","r",encoding="utf-8")
lines = fp.readlines()
loss,acc,val_loss,val_acc = [],[],[],[]
for line in lines:
line = line.strip('\n')
line = line.split('\t')
loss.append(float(line[0]))
acc.append(float(line[1]))
val_loss.append(float(line[2]))
val_acc.append(float(line[3]))
x = np.array([i for i in range(1,51)])
y1 = np.array(acc)
y2 = np.array(val_acc)
y3 = np.array(loss)
y4 = np.array(val_loss)
plt.figure(1)
plt.title('訓(xùn)練集和驗(yàn)證集的準(zhǔn)確率')
plt.xlabel('訓(xùn)練輪數(shù)')
plt.ylabel('準(zhǔn)確率')
plt.scatter(x,y1,color='cyan',label='訓(xùn)練集準(zhǔn)確率')
plt.plot(x,y2,color='r',label='驗(yàn)證集準(zhǔn)確率')
plt.legend(loc='lower right')
plt.figure(2)
plt.title('訓(xùn)練集和驗(yàn)證集的損失值')
plt.xlabel('訓(xùn)練輪數(shù)')
plt.ylabel('損失值')
plt.scatter(x,y3,color='b',label='訓(xùn)練集損失')
plt.plot(x,y4,color='r',label='驗(yàn)證集損失')
plt.legend()
plt.show()
到了這里,關(guān)于同濟(jì)大學(xué)Python程序設(shè)計(jì)基礎(chǔ) 實(shí)驗(yàn)九:數(shù)據(jù)可視化的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!