第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 射线衍射曲线。具体要求如下:
- 图名为“X射线衍射图谱”
- 纵坐标标签为“Intensity”,横坐标标签为“2d”,
- 设置线颜色为“红色”,实线。
- 绘制蓝色破折线为纵坐标轴、红色破折线为横坐标轴,
- 要求中文显示正常,宋体’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()