【头歌-Python】Python第九章作业(初级)第 1、2、4 关

第1关:绘制温度曲线

任务描述

附件中是某月每天的最高温度和最低温度数据,请绘制本月的高温曲线(红色、圆点标记坐标)和低温曲线(蓝色、星号标记坐标),线型、刻度如输出示例所示,线宽度默认值,并设置图表标题为”9月温度曲线图”,标题字体为宋体(‘SimSun’),默认字号。

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

要求程序代码运行无误,按要求绘制温度曲线并保存为图片。

输入格式

该题目没有输入

输出格式

绘制结果写入文件’temp_curve.png’中

下图为示意图,具体效果需严格按照题目要求设置

参考代码

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关:分态密度图

任务描述

根据附件中的数据文件绘制分态密度图,在同一个图中绘制多条曲线,数据中第一列为横坐标值,后面各列为纵坐标值,第一列与后面的每一列的数据组合可绘制一条态密度曲线,未明确要求的线型和宽度使用默认值。

评分标准

  1. 绘制如输出示例所示的态密度曲线图
  2. 在 x 值为 0 处绘制平行于 y 轴直线,线型为破折线,红色,线宽为1
  3. 设置线条颜色依次为 ‘blue’, ‘green’, ‘red’, ‘purple’,‘gray’,‘Navy’,‘violet’,‘Gold’,‘Black’
  4. x 轴加标签 “E-Ev(eV)”,y 轴加标签 “DOS”
  5. 增加图名 “BaTiO3 分态密度曲线图”,中文字体为宋体’SimSun’,字号用默认值,要求保证中文正常显示

输入输出示例

(示例图与本题数据与要求不同,仅供参考)

参考代码

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关:态密度曲线绘制

任务描述

根据附件中的数据,绘制如下图所示的态密度曲线:

  1. 基本曲线
  2. x,y轴刻度范围根据数据自动产生
  3. 线型用实线,曲线颜色为红色,x轴坐标标题为Energy(Ha),y轴坐标标题为Density of States(electrons/Ha)

输入格式

此题无输入

输出格式

要求本地调试、运行、绘制图形。

示例输出仅供参考

参考代码

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()

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
乘风的头像乘风管理团队
上一篇 2023年7月11日
下一篇 2023年7月11日

相关推荐