ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

matplotlib绘图表(Python)

2022-05-08 12:34:06  阅读:181  来源: 互联网

标签:plt Python matplotlib write score 绘图 csv data axis


matplotlib绘图表

1. 柱状图

import csv
import matplotlib.pyplot as plt

subject = ["语文","数学","英语","生物"]
score_first = [75, 90, 70, 77]
score_second = [80, 90, 80, 80]
score_third = [85, 90, 75, 88]
score_fourth = [90, 90, 80, 90]

# 写数据
with open ("test.csv", 'w', encoding="utf8", newline="") as f:
    # 基于文件对象构建csv写入对象
    csv_write = csv.writer(f)
    # 逐行写入
    csv_write.writerow(subject)
    csv_write.writerow (score_first)
    csv_write.writerow (score_second)
    csv_write.writerow (score_third)
    csv_write.writerow (score_fourth)

# 读数据
with open ("test.csv", 'r', encoding="utf8", newline="") as f:
    # 基于文件对象构建读取对象
    csv_read = csv.reader(f)
    # 逐行读取
    data = []
    for row in csv_read:
        data.append(row)
# 计算各科目平均分
sumlist = []
for i in range (0,4):
    sum = 0
    for j in range (1, 5):
        #print (j,i)
        sum = sum + int (data[j][i])
    sumlist.append(sum/4)

# 画图
x_axis_data = data[0]
y_axis_data = sumlist
# y_axis_data加标签数据
for x, y in zip(x_axis_data, y_axis_data):
        plt.text(x, y+0.5, '%.00f' % y, ha='center', va='bottom', fontsize=10) 
# 画柱状图
plt.bar(x_axis_data, y_axis_data, width=0.2)
# 设置y轴范围
plt.ylim([0, 100])
# 设置matplotlib显示中文
plt.rcParams['font.sans-serif'] = ['SimHei']
# 设置柱状图标题
plt.title("四次联考平均分", fontsize=20)
# 显示柱状图
plt.show()

2. 折线图

import csv
from turtle import color
import matplotlib.pyplot as plt
import numpy as np


subject = ["语文","数学","英语","生物","物理","化学"]
score_first = [65, 70, 80, 85, 77, 65]
score_second = [70, 75, 85, 90, 84, 94]
score_third = [80, 60, 75, 88, 67, 55]
score_fourth = [90, 65, 77, 95, 63, 88]

# 写数据
with open ("test.csv", 'w', encoding="utf8", newline="") as f:
    # 基于文件对象构建csv写入对象
    csv_write = csv.writer(f)
    # 逐行写入
    csv_write.writerow(subject)
    csv_write.writerow (score_first)
    csv_write.writerow (score_second)
    csv_write.writerow (score_third)
    csv_write.writerow (score_fourth)

# 读数据
with open ("test.csv", 'r', encoding="utf8", newline="") as f:
    # 基于文件对象构建读取对象
    csv_read = csv.reader(f)
    # 逐行读取
    data = []
    for row in csv_read:
        data.append(row)

# 已知数据
x_axis_data = data[0]
y_axis_data1 = [int(x)  for x in data[1]]
y_axis_data2 = [int(x)  for x in data[2]]
y_axis_data3 = [int(x)  for x in data[3]]
y_axis_data4 = [int(x)  for x in data[4]]

# 设置图片大小
plt.figure (figsize=(12, 8), dpi=90)
# 设置matplotlib显示中文
plt.rcParams['font.sans-serif'] = ['SimHei']

# 画折线图
plt.plot(x_axis_data, y_axis_data1, color='r', linestyle='--', label="第一次联考")
plt.scatter (x_axis_data, y_axis_data1, color='r')
plt.plot(x_axis_data, y_axis_data2, color='b', linestyle='--', label="第二次联考")
plt.scatter (x_axis_data, y_axis_data2, color='b')
plt.plot(x_axis_data, y_axis_data3, color='g', linestyle='--', label="第三次联考")
plt.scatter (x_axis_data, y_axis_data3, color='g')
plt.plot(x_axis_data, y_axis_data4, color='y', linestyle='--', label="第四次联考")
plt.scatter (x_axis_data, y_axis_data4, color='y')
# plt.plot(x_axis_data, y_axis_data2, "rs--", alphas=0.5, linewidth=1, label="second")
# plt.plot(x_axis_data, y_axis_data3, "go--", alphas=0.5, linewidth=1, label="third")
# plt.plot(x_axis_data, y_axis_data4, "cc--", alphas=0.5, linewidth=1, label="fourth")

# 设置y轴范围
plt.ylim(0, 100)
# 设置图例字体大小
plt.legend(fontsize=15)
# 显示网格
plt.grid (alpha=0.2)

# 设置柱状图标题
plt.title("四次联考平均分", fontsize=20)
# 显示柱状图
plt.show()

标签:plt,Python,matplotlib,write,score,绘图,csv,data,axis
来源: https://www.cnblogs.com/caojun97/p/16244370.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有