Because the task I promised Ms. Yang some time ago has not been completed, I take this opportunity to sort out the following contents and apologize, hoping to be forgiven by Ms. Yang.
# python绘制折线图教程
import matplotlib.pyplot as plt
# 引入csv模块
import csv
path="csv文件地址"
# 用csv文件数据
# with函数省略close操作
with open(path) as data:
reader = csv.reader(data)
rows = [row[0] for row in reader]
# row for row in reader 把reader中每一行的数据取出来
# 输出表中的第一行数据作为展示
x=rows[1:]
print(x)
with open(path) as data2:
reader1 = csv.reader(data2)
line = [i[1] for i in reader1]
y=line[1:]
print(y)
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 控制plt绘图中文显示代码 简称 rc配置 或者 rc参数(可配置多种属性)
# https://blog.csdn.net/weixin_39010770/article/details/88200298
# rc参数配置详情
# plot中参数的含义分别是横轴值(x),纵轴值(y),线的形状、颜色,透明度,线的宽度和标签内容。
plt.plot(x, y, 'ro-', alpha=0.8, linewidth=1, label='图例内容')
# 折线图必备两个列表,分别用于x和y轴数据(自行填入或读取csv数据文件)
plt.legend(loc="upper left")
# 配置默认参数:实现plt.plot中label属性显示
# labels 是图例的名称(能够覆盖在plt.plot( )中label参数值)
# loc 代表了图例在整个坐标轴平面中的位置(一般选取'best'这个参数值)
plt.xlabel('x轴名称')
plt.ylabel('y轴名称')
# 参数轴名称标识
plt.show()
# 绘图
import matplotlib.pyplot as plt
import csv
path="csv文件地址"
# 用csv文件数据
# with函数省略close操作
with open(path) as data:
reader = csv.reader(data)
rows = [row[0] for row in reader]
# row for row in reader 把reader中每一行的数据取出来
# 输出表中的第一行数据作为展示
x = rows[1:]
print(x)
with open(path) as data2:
reader1 = csv.reader(data2)
line = [i[1] for i in reader1]
y = line[1:]
print(y)
# 这两行代码解决 plt 中文显示的问题
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 条形图绘图基本属性格式如下:
# matplotlib.pyplot.barh(y, width, height=0.8, left=None, *, align=’center’, **kwargs)
plt.barh(x, y) # 横放条形图函数 barh
# plt.bar(waters, buy_number) 竖直放置条形图函数 bar
plt.title('条形图')
plt.xlabel('x轴名称')
plt.ylabel('y轴名称')
plt.show()
import matplotlib.pyplot as plt
import csv
path="csv文件地址"
# 中文字符设置
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 用csv文件数据
# with函数省略close操作
with open(path) as data:
reader = csv.reader(data)
rows = [row[0] for row in reader]
# row for row in reader 把reader中每一行的数据取出来
# 输出表中的第一行数据作为展示
x=rows[1:]
print(x)
with open(path) as data2:
reader1 = csv.reader(data2)
line = [i[1] for i in reader1]
y=line[1:]
print(y)
# 各部分名称
labels = x
# 各部分数值大小
num = y
# 画饼图(数据,数据对应的标签,百分数保留两位小数点)
plt.pie(num, labels=labels, autopct='%1.2f%%',textprops={'fontsize': 20, 'color': 'black'})
plt.title("饼状图绘制")
# 绘制函数
plt.show()
import matplotlib.pyplot as plt
import numpy as np
import csv
path="csv文件地址"
# plt格式处理
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 用csv文件数据
# with函数省略close操作
with open(path) as data:
reader = csv.reader(data)
rows = [row[0] for row in reader]
# row for row in reader 把reader中每一行的数据取出来
# 输出表中的第一行数据作为展示
x=rows[1:]
print(x)
with open(path) as data2:
reader1 = csv.reader(data2)
line = [i[1] for i in reader1]
y=line[1:]
print(y)
# 颜色序列,也可以使用rgb
c = np.array([0,1,2,3,4])
# 简单参数介绍 c颜色参数 s散点大小
plt.scatter(x, y, c=c, s=100, label='图例内容')
plt.xticks(x)
plt.yticks(y)
plt.xlabel("x轴名称", fontdict={'size': 20})
plt.ylabel("y轴名称", fontdict={'size': 20})
plt.title("散点图绘制", fontdict={'size': 20})
plt.legend(loc='best')
plt.show()
对于前几种基础图形,改进及完善的地方在于绘图参数的配置,线条的rc配置参数,图样丰富度等等。基本生成方法较为简单。对于箱线图的数据略有特殊。
我们采用DataFrame方法处理字典数据,同时注意的是用不同方法读取csv文件可能产生不同结果。DataFrame 是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame 既有行索引也有列索引,它可以被看做由 Series 组成的字典(共同用一个索引)
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import csv
path="csv文件地址"
# 格式处理
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 用csv文件数据
# with函数省略close操作
with open(path) as data:
reader = csv.reader(data)
rows = [row[0] for row in reader]
# row for row in reader 把reader中每一行的数据取出来
# 输出表中的第一行数据作为展示
x=rows[1:]
print(x)
with open(path) as data2:
reader1 = csv.reader(data2)
line = [i[1] for i in reader1]
y=line[1:]
print(y)
int_lst = []
for item in y:
int_lst.append(int(item))
print(int_lst)
dic = dict.fromkeys(x, int_lst)
print(dic)
dic1=pd.DataFrame(dic)
dt = pd.DataFrame(dic1)
# 用matplotlib来画出箱型图
plt.boxplot(dt)
plt.show()
因实际要求,每个图的生成需要独立代码,顾没有用函数方法整合重复代码块,另外对于文件操作方法有很大改进空间,自行修改。