python|python matplotlib进阶篇

导入的模块:

import matplotlib.pyplot as plt import numpy as np #正确显示中文 plt.rcParams['font.sans-serif'] = ['SimHei'] #显示负号的 plt.rcParams['axes.unicode_minus'] = False import pandas as pd from pandas import Series,DataFrame

1.给柱状图的柱子设置名字
# 取出一张图纸 plt.figure(1) #确定图像的位置 #subplot(xyz) x行y列z位置,比如111就是一行一列一整个 ax1 = plt.subplot(111) #准备画图的数据 data = https://www.it610.com/article/np.array([15,20,18,25]) # 给一个范围,x轴 x_bar = np.arange(4) # 设置x,y轴,left和height是匿名参数 rect = ax1.bar(left = x_bar,height = data,width=0.5,color='#add8e6') #利用for循环来获取宽度和高度,用途是给每一个柱子设置文字 for rec in rect: x = rec.get_x() # 这是获取每一个柱子x轴的位置 #print(x) height = rec.get_height() #这是获取每一个柱子y轴高度的位置 #print(height) #设置文字bar(柱)上的文字 #语法:ax1.text(x,y,str) x:文字在bar上的位置,默认是0.最左边,可以加上一个以x轴大小为单位的值 #y:文字在bar上的位置,默认是0.最下边,可以加上一个以y轴大小为单位的值 #str:是要显示的文字 ax1.text(x+0.1,height+0.3,str(height)+'W') # 设置x轴 ax1.set_xticks(x_bar)ax1.set_xticklabels(['第一季度','第二季度','第三季度','第四季度']) #set_xlabel和plt.xlabel 一样的含义 #设置y轴 ax1.set_ylabel('销量(单位:万件)') ax1.set_title('2017年季度销售量统计') ax1.grid(True)# 加上网格 ax1.set_ylim(0,30)#设置y轴范围 plt.show()

python|python matplotlib进阶篇
文章图片

2.同画布绘制多幅图形
# 默认的像素就是80 plt.figure(figsize=(3,3),dpi=80) #创建一个画板 plt.figure(1) plt.subplot(121) plt.plot([1,2,3],[1,2,3]) plt.title('画板1的画布1') plt.subplot(122) plt.plot([1,2,3],[1,2,3]) plt.title('画板1的画布2') plt.tight_layout() # 设置画布1和画布2的距离 #画到新建的画板里的 plt.figure(2) plt.plot([4,5,6],[4,5,6]) plt.title('画板2的画布')

python|python matplotlib进阶篇
文章图片

3.加载文件并绘图 这里以csv文件为例子
(1)用csv模块进行读取
import csv x=[] y=[] with open('csv/matplotlib-demo.csv','r') as csvfile: #读取的文件 lines = csv.reader(csvfile,delimiter=',') #print(list(lines)) for each in lines: x.append(int(each[0]))# x列表是加入数据表中的第一列 y.append(int(each[1]))# y列表是加入数据表中的第二列 print(x) print(y) plt.plot(x,y,label='csv数据') plt.title('从文件加载数据并展示') plt.legend() plt.ylim(0,9)#设置y轴的范围 plt.show()

(2).使用Numpy简化代码
x,y = np.loadtxt('csv/matplotlib-demo.csv',delimiter=',',unpack=True) plt.plot(x,y,label='csv数据') plt.title('从文件加载数据并展示') plt.legend() plt.ylim(0,9)#设置y轴的范围 plt.show()

python|python matplotlib进阶篇
文章图片

4.从网络api上加载数据并绘图
import urllib url ='https://api.douban.com/v2/book/1220562' json_object = urllib.request.urlopen(url).read().decode() #打开读取解码import json #进行转换 data = https://www.it610.com/article/json.loads(json_object) # print(data) #获取所有的标签 tags =data['tags'] print(tags)x =[] y =[]for each in tags: x.append(each['name']) y.append(each['count']) plt.bar(x,y,label='图书搜索热词') plt.legend() plt.xlabel('搜索的词条') plt.ylabel('搜索排名') plt.show()

【python|python matplotlib进阶篇】python|python matplotlib进阶篇
文章图片

    推荐阅读