1.创建一个2行1列的绘图区并在第1行第1列绘制函数f(x)=x2 的曲线图(x的取值范围[-1,1]),在第2行第1列绘制函数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='倒数曲线')
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.调用scatter函数绘制正弦函数的曲线,请在曲线中添加一个表示XY的轴线,并在X轴方向输出刻度标记文本,效果如图2.9.2所示。 提示:利用plot函数绘制直线,然后在合适位置显示标记字符。
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函数曲线')
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.调用bar()函数绘制教材部分例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.绘制一个心形图案, 参考数学函数为ρ=a(1-sinθ) (θ的取值范围[0,2]),x=pcosθ,y=psinθ,在直角坐标系上的绘制图案效果如图2.9.3(a)所示,在极坐标中的绘制效果如图2.9.3(b)所示。 提示:极坐标绘制函数参考格式: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('心形曲线-直角坐标系')
plt.show()
5. 绘制一个饼图,显示你每个月各项消费支出的比例,消费支出主要包括:学习用品、日常用品、伙食费、通讯费、娱乐费和其他开支。
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 = ['学习用品','日常用品','伙食费','通讯费','娱乐费','其他开支']
plt.pie(persent,autopct="%.1f%%",labels=labels)
plt.title('每月各项消费支出比例')
plt.show()
6.读取“三国人名汇总.txt”中的人物名字,读取“三国演义.txt”的全部内容,先统计所有人物的名字在书本中出现的次数,并对出现次数超过100次的人物绘制一个柱状图,然后根据人物的词频大小绘制一个三国人名的词云图,效果如图2.9.4所示。(数据文件下载链接:https://pan.baidu.com/s/1b81lMIx3In-V64vs7bsHkw,提取码:jg41)文章来源:https://www.toymoban.com/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'三国人名汇总.txt',"r",encoding="ANSI")
fp2 = open(r'三国演义.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.神经网络模型在训练过程中将显示每一个训练回合所用的时间、训练集上的损失值、训练集上的准确率、验证集上的损失值和验证集上的准确率,把这些数据保存到变量history,训练结束后对这些数据进行分析,图2.9.5显示了前面5个回合的训练数据。 图2.9.5 神经网络模型训练过程 现将50个训练回合产生的数据写入到文件Epoch.txt中。用记事本中打开Epoch.txt,前面5行数据的显示结果如图2.9.6所示,其中第1列为训练集的损失值,第2列为训练集的准确率,第3列为验证集上的损失值,第4列为验证集上的准确率。 131 图2.9.6 训练产生的部分数据 下面请读入Epoch.txt文件中的数据,可视化显示训练集与验证集的准确率及损失值的变化趋势,可视化显示的结果将有助于判别本次训练的神经网络模型其拟合情况,输出结果如图2.9.7所示。(Epoch.txt文件的下载链接为https://pan.baidu.com/s/1KukeCMtSkAhzgDsRVbtwzg,提取码为:iqjy) 文章来源地址https://www.toymoban.com/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('训练集和验证集的准确率')
plt.xlabel('训练轮数')
plt.ylabel('准确率')
plt.scatter(x,y1,color='cyan',label='训练集准确率')
plt.plot(x,y2,color='r',label='验证集准确率')
plt.legend(loc='lower right')
plt.figure(2)
plt.title('训练集和验证集的损失值')
plt.xlabel('训练轮数')
plt.ylabel('损失值')
plt.scatter(x,y3,color='b',label='训练集损失')
plt.plot(x,y4,color='r',label='验证集损失')
plt.legend()
plt.show()
到了这里,关于同济大学Python程序设计基础 实验九:数据可视化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!