禁止转载,原文:https://blog.csdn.net/qq_45801887/article/details/131217428
参考教程:B站视频讲解——https://space.bilibili.com/3546616042621301
第1关:绘制温度曲线
任务描述
附件中是某月每天的最高温度和最低温度数据,请绘制本月的高温曲线(红色、圆点标记坐标)和低温曲线(蓝色、星号标记坐标),线型、刻度如输出示例所示,线宽度默认值,并设置图表标题为"9月温度曲线图",标题字体为宋体(‘SimSun’),默认字号。
plt.rcParams['font.sans-serif'] = ['SimSun']
plt.rcParams['axes.unicode_minus'] = False
要求程序代码运行无误,按要求绘制温度曲线并保存为图片。
输入格式
该题目没有输入
输出格式
绘制结果写入文件’temp_curve.png’中
下图为示意图,具体效果需严格按照题目要求设置
参考代码
# 禁止转载,原文:https://blog.csdn.net/qq_45801887/article/details/131217428
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['axes.unicode_minus'] = False
plt.rcParams['font.sans-serif'] = ['SimSun']
with open('step2/9.1 某月温度.txt', 'r', encoding='utf-8') as f:
data = []
for lines in f.readlines():
data.append(list(map(int, lines.split())))
x = [d[0] for d in data]
y1 = [d[1] for d in data]
y2 = [d[2] for d in data]
plt.plot(x, y1, color = 'r', marker='o')
plt.plot(x, y2, color = 'b', marker='*')
plt.xticks(list(range(1, 32)))
plt.yticks(list(range(-10, 30, 5)))
plt.axhline(0, linestyle='--', color='b')
plt.title('9月温度曲线图')
plt.savefig('output/temp_curve.png')
plt.show()
第2关:分态密度图
任务描述
根据附件中的数据文件绘制分态密度图,在同一个图中绘制多条曲线,数据中第一列为横坐标值,后面各列为纵坐标值,第一列与后面的每一列的数据组合可绘制一条态密度曲线,未明确要求的线型和宽度使用默认值。
评分标准
- 绘制如输出示例所示的态密度曲线图
- 在 x 值为 0 处绘制平行于 y 轴直线,线型为破折线,红色,线宽为1
- 设置线条颜色依次为 ‘blue’, ‘green’, ‘red’, ‘purple’,‘gray’,‘Navy’,‘violet’,‘Gold’,‘Black’
- x 轴加标签 “E-Ev(eV)”,y 轴加标签 “DOS”
- 增加图名 “BaTiO3 分态密度曲线图”,中文字体为宋体’SimSun’,字号用默认值,要求保证中文正常显示
输入输出示例
(示例图与本题数据与要求不同,仅供参考)
参考代码
# 禁止转载,原文:https://blog.csdn.net/qq_45801887/article/details/131217428
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimSun']
plt.rcParams['axes.unicode_minus'] = False
color = ['blue', 'green', 'red', 'purple','gray','Navy','violet','Gold','Black']
with open('step3/DOS_SUM.txt', 'r', encoding='utf-8') as f:
data = []
for lines in f.readlines():
data.append([line for line in lines.strip().split() if line!=''])
for i in range(9):
x = [float(d[0]) for d in data]
y = [float(d[i+1]) for d in data]
plt.plot(x, y, color=color[i])
plt.axvline(0, linestyle='--', c='red', linewidth=1)
plt.xlabel("E-Ev(eV)")
plt.ylabel("DOS")
plt.title("BaTiO3 分态密度曲线图")
plt.savefig("output/stu.png")
plt.show()
第4关:态密度曲线绘制
任务描述
根据附件中的数据,绘制如下图所示的态密度曲线:
- 基本曲线
- x,y轴刻度范围根据数据自动产生
- 线型用实线,曲线颜色为红色,x轴坐标标题为Energy(Ha),y轴坐标标题为
Density of States(electrons/Ha)
输入格式
此题无输入
输出格式
要求本地调试、运行、绘制图形。
示例输出仅供参考
参考代码
# 禁止转载,原文:https://blog.csdn.net/qq_45801887/article/details/131217428
import matplotlib.pyplot as plt
with open('step5/DosOfBaTiO3.txt', 'r', encoding='utf-8') as f:
data = []
for lines in f.readlines():
data.append(list(map(float, lines.strip().split('\t'))))
x, y = [], []
for d in data:
x.append(d[0])
y.append(d[1])
plt.plot(x, y, color='r', linewidth=1)
plt.xlabel('Energy(Ha)')
plt.ylabel('Density of States(electrons/Ha)')
plt.savefig('output/exam.png')
plt.show()