【头歌-Python】9.1 X射线衍射曲线绘制(project)第1~2关

第1关:X 射线衍射曲线

任务描述

本关任务:读文件中的数据绘制线图形。

相关知识

为了完成本关任务,你需要掌握:
1.python 读取文件
2.使用 matplotlib 绘制图形

python 读取文件
python读取文件可以用以下函数实现:

def read_file(file):
    """ 读文件file, 返回值为二维列表,其中数据是字符串类型。 """
    with open(file, 'r', encoding='utf-8') as file:
        data_list = [line.strip().split() for line in file]
    return data_list[1:]  # 去掉标题行数据

编程要求

  • 文件下载:
    XRD_AFO.txt
    根据提示,在右侧编辑器中补充代码,绘制 X 射线衍射曲线,使用系统默认颜色与线型。

  • 测试说明
    平台会对你编写的代码进行测试:

  • 输出示例:
    在这里插入图片描述

参考代码

import matplotlib.pyplot as plt

def read_file(file):
    """ 读文件file, 返回值为二维列表,其中数据是字符串类型。 """
    with open(file, 'r') as f:
        data_list = [list(map(eval, line.strip().split())) for line in f.readlines()[1:]]
    	return data_list

def plot_xrd(data_list):
    """接收二维列表为参数,绘制曲线"""
    x = [d[0] for d in data_list]
    y = [d[1] for d in data_list]
    plt.plot(x, y)

if __name__ == '__main__':
    data = read_file('XRD_AFO.txt')
    plot_xrd(data)
    plt.savefig('result/result.jpg')
    plt.show()

第2关:X 射线衍射曲线标注

任务描述

本关任务:读文件中的数据绘制线图形并加标注。

相关知识

为了完成本关任务,你需要掌握:
1.python 读取文件中的数据
2.使用 matplotlib 绘制图形

python 读取文件
python读取文件可以用以下函数实现:

def read_file(file):
    """ 读文件file, 返回值为二维列表,其中数据是字符串类型。 """
    with open(file, 'r', encoding='utf-8') as file:
        data_list = [line.strip().split() for line in file]
    return data_list

编程要求

根据提示,在右侧编辑器 Begin-End 区间中补充代码,绘制 X 射线衍射曲线。具体要求如下:

  1. 图名为“X射线衍射图谱”
  2. 纵坐标标签为“Intensity”,横坐标标签为“2d”,
  3. 设置线颜色为“红色”,实线。
  4. 绘制蓝色破折线为纵坐标轴、红色破折线为横坐标轴,
  5. 要求中文显示正常,宋体’SimSun’,字号用默认值。

测试说明

平台会对你编写的代码进行测试:

输出示例(仅供参考,按题目要求绘图):
在这里插入图片描述

参考代码

import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['SimSun']
plt.rcParams['axes.unicode_minus'] = False

def read_file(file):
    """ 读文件file, 返回值为二维列表,其中数据是字符串类型。 """
    with open(file, "r") as f:
        data_list = [list(map(eval, line.strip().split())) for line in f.readlines()[1:]]
    	return data_list

def plot_xrd(data_list):
    """接收二维列表为参数,绘制曲线,红色实线"""
    x = [d[0] for d in data_list]
    y = [d[1] for d in data_list]
    plt.plot(x, y, 'r')

def add_label():
    """增加坐标轴标识与图名"""
    plt.axhline(0, linestyle='--', color='b')
    plt.axvline(0, linestyle='--', color='r')
    plt.title("X射线衍射图谱")
    plt.xlabel("2d")
    plt.ylabel("intensity")

if __name__ == '__main__':
    data = read_file('XRD_AFO.txt')
    plot_xrd(data)
    add_label()
    plt.savefig('result/result.jpg')
    plt.show()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/28931.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

chatgpt赋能python:Python收费介绍

Python收费介绍 什么是Python? Python是一种高级的、解释性、面向对象、纯粹的动态语言,多用于快速应用程序开发、脚本编写、系统管理任务等。它有一个简单直观优美的语法,非常容易学习。 Python的收费形式 Python语言本身是免费的,任何…

如何使用Jmeter进行http接口测试?

目录 前言: 一、开发接口测试案例的整体方案: 二、接口自动化适用场景: 三、接口测试环境准备 四、创建工程: 总结: 前言: 本文主要针对http接口进行测试,使用Jmeter工具实现。 Jmter工具设…

1.2 Scala变量与数据类型

一、变量声明 (一)、利用val声明变量 案例演示 (二)利用var声明变量 案例演示 (三)换行输入语句(续行) (四)同时声明多个变量 Scala还可以将多个变量放在一起…

射频电路layout总结

射频电路板设计由于在理论上还有很多不确定性,因此常被形容为一种“黑色艺术”,但这个观点只有部分正确,RF电路板设计也有许多可以遵循的准则和不应该被忽视的法则。在实际设计时,真正实用的技巧是当这些准则和法则因各种设计约束…

RTU遥测终端机的应用场景有哪些?

遥测终端机又称智能RTU遥测终端机,是一种用于采集、传输和处理遥测数据的设备。在现代科技的发展中,遥测终端机扮演着重要的角色。它是一种能够实现远程监测和控制的关键设备,广泛应用于各个领域,包括水文水利、环境监测、工业自动…

创新案例|专注在线 协作平台 设计产品中国首家PLG独角兽企业蓝湖如何实现98%的头部企业渗透率

蓝湖起步于2015年,是一款服务于产品经理、设计师、工程师的产品设计研发在线协作工具, 2021年10月,蓝湖宣布完成C轮融资,融资额高达10亿人民币,称为中国2B市场中首家采用PLG发展的独角兽企业,并实现了从100…

Web 自动化测试Selenium 之PO 模型

目录 1. po 模型介绍 2. PageObject 设计模式 3. PO 的核心要素 4. 非PO 实现 5. PO 实现 6. 总结 7. PO 模式的特点 总结: 1. po 模型介绍 在自动化中,Selenium 自动化测试中有一个名字经常被提及 PageObject (思想与面向对象的特征相同)&#x…

MySQL数据库高级操作

目录 MySQL中6种常见的约束克隆表清空表的数据记录临时表创建外键约束,保证数据的完整性和一致性。 MySQL中6种常见的约束 主键约束(primary key)外键约束(foreign key)非空约束(not null)唯一…

安卓端Google隐私沙盒归因报告聚焦

自2022年2月Google首次提出将推出隐私沙盒至今已一年有余。现在,安卓端的隐私沙盒Beta测试已针对特定Android13设备正式开始。作为早期测试者,Adjust很高兴与 Google一同迈出增强用户隐私的第一步,并在接下来的旅程中继续携手同行。为帮助移动…

opencv初学记录

准备工作: 1.找一张图片 2.准备python运行环境,并导入库,pip install opencv-python 读取文件,并打印维度 import cv2 #为什么是cv2不是cv呢,这个2指的是c的api,是为了兼容老板,cv指的就是c&am…

今天面了一个来字节要求月薪23K,明显感觉他背了很多面试题...

最近有朋友去字节面试,面试前后进行了20天左右,包含4轮电话面试、1轮笔试、1轮主管视频面试、1轮hr视频面试。 据他所说,80%的人都会栽在第一轮面试,要不是他面试前做足准备,估计都坚持不完后面几轮面试。 其实&…

ChatGPT/InstructGPT详解

前言 GPT系列是OpenAI的一系列预训练文章,GPT的全称是Generative Pre-Trained Transformer,顾名思义,GPT的目的就是通过Transformer为基础模型,使用预训练技术得到通用的文本模型。目前已经公布论文的有文本预训练GPT-1&#xff…

【操作系统】计算机操作系统知识点总结

文章目录 前言一、操作系统的概念与发展二、操作系统的结构与功能1、操作系统的结构2、操作系统的功能 三、进程管理1、进程2、进程的创建3、进程管理的实现4、进程控制块 四、内存管理1、内存2、内存管理3、内存管理的实现 五、文件系统1、文件系统2、文件系统的主要任务3、文…

Java开发 - 带你了解集群间的相互调用,你还在等什么?

目录 前言 导读 项目准备 集群准备 父工程引入子项目 服务调用方HelloService准备 pom文件 yml文件 Controller文件 服务提供方HelloWorld准备 pom文件 yml文件 Controller文件 运行此两个工程 hello_world组集群 集群调用测试 RestTemplate换成Dubbo行不行…

Word 2021入门指南:详细解读常用功能

软件安装:办公神器office2021安装教程,让你快速上手_正经人_____的博客-CSDN博客 一、 新建文档 打开Word 2021后,可以看到左上角的“文件”选项,点击它,在弹出的菜单中选择“新建”选项。然后可以选择空白文档或者使…

Linux安装和配置VCenter

Linux安装和配置VCenter 以下演示安装 Linux VCenter,也就是使用VMware-VCSA-all-6.7.0-13010631.iso 镜像包。通过一台 Windows服务器远程连接 ESXI 服务器安装 Linux 版本的 VCenter。也就是Windows 服务器只是安装的界面的一个载体。 Linux VCenter环境搭建 下…

网络安全入门学习第十七课——PHP数组

文章目录 一、索引数组二、关联数组三、数组定义1、多维数组2、赋值方式3、短数组定义法([ ] PHP 5.4起增加的) 四、访问数组五、遍历数组1、使用 for 循环2、foreach语句遍历 六、合并两个数组1、“”联合运算符2、array_combine 函数 七、数组排序函数八、数组增删…

低成本开发专属小程序支持自定义开发设计

传统定制开发小程序成本高,还需要不断地沟通和交流才能一步步地去实现你想要的功能和效果,那么除了传统的定制开发小程序外,用户其实还可以选择使用模板开发小程序,不仅能实现小程序的所有基础功能,还不用编程维护和开…

基于html+css的图展示128

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

Rust语言从入门到入坑——(3)小谈Cargo工具以及VScode配置Rust

文章目录 0 引入1、Cargo 是什么2、常用Cargo指令3、VScode配置Rust环境3.1.tasks.json3.2.launch.json 4、总结 0 引入 上一节我们谈了在编译工程的时候用到Cargo(卡狗) 1、Cargo 是什么 Cargo 是 Rust 的构建系统和包管理器。 Rust 开发者常用 Carg…