axis,指的是x轴或y 轴这种坐标轴
通过下面的小例子,我们看一下matplotlip 该如何简单的使用
例:我想统计excel 表中7月的收益变化情况图,现在我们值统计利润这一列数据。
第一步:.先打开excel 表并读取所需要的两列数据。
import xlrd
#导入xlrd模块
data = xlrd.open_workbook(r'F:\desktop\7月收益详情.xlsm')
#打开excel文件
data.sheet_names()
print('sheet:'+str(data.sheet_names()))
table1 = data.sheet_by_index(0)
col1 = table1.col_values(0)
col2 = table1.col_values(4)
print(col1)
print(col2)
输出结果为:
sheet:['Sheet1']
['日期', 44013.3338310185, 44014.3338310185, 44015.0, 44016.0, 44017.0, 44018.0, 44019.0, 44020.0, 44021.0, 44022.3338310185, 44023.3338310185, 44024.3338310185, 44025.3338310185, 44026.3338310185, '总计']
['利润', 272.93506, 494.53627, -416.0265, 151.18887, 157.20418, 374.77467, 347.14092, 839.02575, 124.39409, 1614.3919, 1583.78108, 1656.50763749638, 725.65582, 1653.79991, 9579.3096574964]
第二步 :接着用的到的数据绘图。
from matplotlib import pyplot as plt #导入pyplot
x = [ 44013.3338310185, 44014.3338310185, 44015.0, 44016.0, 44017.0, 44018.0, 44019.0, 44020.0, 44021.0, 44022.3338310185, 44023.3338310185, 44024.3338310185, 44025.3338310185, 44026.3338310185] #数据在x轴的位置,是一个可迭代对象
y =[ 272.93506, 494.53627, -416.0265, 151.18887, 157.20418, 374.77467, 347.14092, 839.02575, 124.39409, 1614.3919, 1583.78108, 1656.50763749638, 725.65582, 1653.79991] #数据在y轴的位置,是一个可迭代对象
#x轴和y轴的数据一起组成了所有要绘制的坐标(2,15)(4,13)....
plt.plot(x,y) #传入x和y,通过plot绘制出折线图
plt.show()#展示图形
这样看matplotlip帮助我们生成的图片还有很多要改进的地方,如下:
- 设置图片的大小
- 保存到本地
- 描述信息,比如坐标轴代表的什么,表头
- 调整坐标轴的刻度间距
- 线条的样式(颜色,透明度等)
- 标记出特殊点(最高点最低点等)
- 给图片加水印
1. 设置图片的大小
在画之前设置图片的大小,
- figsize=(20,8),表示图片,宽20高8
- dpi=80 ,表示图片的清晰度,dpi的值越大越清晰
fig =plt.figure(figsize(20,8),dpi =80)
2. 保存到本地
plt.savefig("./sig_size.png") #文件名加格式
3. 设置图片的刻度
plt.xticks(x) #最简单的是把给定的x轴上的数,都显示在x轴上
plt.xticks(range(2,25,2)) #按步长来设置轴的刻度
plt.yticks(range(min(y),max(y)+1)) #y轴通常是最大最小值
第三步:执行如下代码
from matplotlib import pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.figure(figsize=(15,8) )
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
x = ['7月1日', '7月2日', '7月3日', '7月4日','7月5日', '7月6日', '7月7日', '7月8日','7月9日','7月10日', '7月11日', '7月12日', '7月13日', '7月14日'] #数据在x轴的位置,是一个可迭代对象
y =[272.93506, 494.53627, -416.0265, 151.18887, 157.20418, 374.77467, 347.14092, 839.02575, 124.39409, 1614.3919, 1583.78108, 1656.50763749638, 725.65582, 1653.79991]
#数据在y轴的位置,是一个可迭代对象
plt.title('7月利润变化图')
plt.xlabel('时间')
plt.ylabel('利润 单位(元)')
plt.plot(x,y) #传入x和y,通过plot绘制出折线图
plt.show() #展示图形
第四步.给表加上数据和表格
plt.grid() #给表格加上网格,设置图片的透明度,用到alpha=1#默认为1
plt.grid(alpha=0.4) #降低表格的透明度
from matplotlib import pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.figure(figsize=(20,8) )
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
x = ['7月1日', '7月2日', '7月3日', '7月4日','7月5日', '7月6日', '7月7日', '7月8日','7月9日','7月10日', '7月11日', '7月12日', '7月13日', '7月14日','7月15日'] #数据在x轴的位置,是一个可迭代对象
y =[272.94,494.54, -416.03, 151.19, 157.20, 374.78, 347.14, 834.37, 124.44, 1614.52, 1583.79, 1768.048, 847.73, 1788.86, 1004.16]
#数据在y轴的位置,是一个可迭代对象
plt.plot(x, y, label='利润金额', linewidth=3, color='snow', marker='o',
markerfacecolor='blue', markersize=11 )
for a, b in zip(x, y):
plt.text(a, b, b, ha='center', va='bottom', fontsize=18)
plt.title('7月利润变化图')
plt.xlabel('时间')
plt.ylabel('利润 单位(元)')
plt.plot(x,y) #传入x和y,通过plot绘制出折线图
plt.grid() #给数据加上表格
plt.show() #展示图形
第五步.保存图片
plt.savefig("2.png")
在此说明,方法一:直接写自己想要命名的“文件名+格式”即可,系统会自动保存到桌面。方法二:在桌面新建文本文档,改为想要的格式,并命名。在代码中输入文件名。即可。