同济大学Python程序设计基础 实验九:数据可视化

这篇具有很好参考价值的文章主要介绍了同济大学Python程序设计基础 实验九:数据可视化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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)

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模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python程序设计基础:程序流程控制(一)

    程序流程的基本结构主要有三种,顺序结构、选择结构和循环结构,在顺序结构中是按照语句的位置一句一句顺序执行,每条语句有且只会执行一次,而在选择结构和循环结构中,通常是需要根据条件表达式的值来确定下一步的执行流程。 条件表达中一般使用两种运算符:关

    2024年02月11日
    浏览(42)
  • python程序设计基础 实验三

    ⭐python实验专栏,欢迎订阅与关注! ★观前提示 :本篇内容为python程序设计实验,代码内容经测试没有问题,但是可能会不符合每个人实验的要求,因此以下内容建议仅做思路参考。 一、实验目的 (1)掌握Python各种函数的使用。 二、实验内容 1、编写函数,求三个整数的

    2023年04月13日
    浏览(37)
  • Python程序设计(基础篇·微课版)

     Python程序设计(基础篇·微课版) 内容全面、循序渐进;课程网站、资源丰富;教学博客、透彻深入;应用举例、学以致用 伍孝金 编著 清华大学出版社 定价:58元 印次:1-1 ISBN:9787302580058 出版日期:2021.07.01 印刷日期:2021.07.07 Python已经成为最受欢迎的程序设计语言之一

    2023年04月08日
    浏览(38)
  • Python-基础篇-类与对象/面向对象程序设计

    “类”是物以类聚的 “类” 类 和 对象 是 面向对象编程的 两个 核心概念 类 是对一群具有 相同 特征 或者 行为 的事物的一个统称,是抽象的, 不能直接使用 特征 被称为 属性 行为 被称为 方法 类 就相当于制造飞机时的 图纸 ,是一个 模板 ,是 负责创建对象的 定义类📚

    2024年01月19日
    浏览(49)
  • 南京邮电大学汇编语言程序设计实验二(用户登录验证程序的设计)

    1.掌握循环程序的编写以及结束循环的方法。 2.掌握DOS、BIOS功能调用的使用方法。 用户登录验证程序的实现 程序执行后,给出提示操作,请用户键入用户名和密码;用户在键入密码时,程序不回显键入字符;只有当用户键入的用户名,密码字符串和程序内定的字符串相同时

    2023年04月18日
    浏览(52)
  • 《python语言程序设计基础》(第二版)第二章课后习题参考答案

    第二章 Python程序实例解析 2.1 温度转换 2.2 汇率兑换 优化: 优化的主要改动: 将货币符号和金额分离出来,使代码更加清晰易读。 将条件判断改为根据货币符号进行判断,避免重复判断。 2.3 绘制彩色蟒蛇 2.4 等边三角形的绘制 代码一: 代码二: 2.5 叠加等边三角形的绘制

    2024年03月19日
    浏览(57)
  • 《python语言程序设计基础》(第二版)第六章课后习题参考答案

    第六章 组合数据类型 6.1 随机密码生成 6.2 重复元素判定 6.3 重复元素判定续 6.4 文本字符分析 6.5 生日悖论分析 6.6 《红楼梦》人物统计 注:上述代码仅供参考,若有问题可在评论区留言! 《红楼梦》及人物名单TXT (百度云链接失效可在评论区留言) 链接:https://pan.baidu.c

    2024年02月05日
    浏览(54)
  • 《python语言程序设计基础》(第二版)第五章课后习题参考答案

    第五章 函数和代码的复用 5.1 改造练习题3.5,输出更大的田字格 5.2 实现isOdd函数 5.3 实现isNum函数 5.4 实现multi函数 5.5 实现isPrime函数 5.6 输出10种生日日期格式 代码一: 代码二: 5.7 汉诺塔 注:上述代码仅供参考,若有问题可在评论区留言!

    2024年02月01日
    浏览(49)
  • 燕山大学Linux实验shell程序设计

    本文仅是分享代码设计思想和对书上代码解读仅供参考严禁抄袭!!! 主要是编写shell代码部分问题: 注:for i相当于for i in $* (取全部位置参数)下文存在不在赘述 4.对教材例题4.9 (P108)进行编辑,然后执行。 #!/bin/bash echo $0 $1 $2 $3 $4 $5 $6 $7 $8 $9 shift echo $0 $1 $2 $3 $4 $5 $6 $7 $8 $

    2023年04月09日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包