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

参考教程:B站视频讲解——https://space.bilibili.com/3546616042621301

第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()
  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谛凌

本人水平有限,感谢您支持与指正

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值