导入的模块:
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()
文章图片
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的画布')
文章图片
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()
文章图片
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进阶篇】
文章图片
推荐阅读
- 推荐系统论文进阶|CTR预估 论文精读(十一)--Deep Interest Evolution Network(DIEN)
- Python专栏|数据分析的常规流程
- Python|Win10下 Python开发环境搭建(PyCharm + Anaconda) && 环境变量配置 && 常用工具安装配置
- Python绘制小红花
- Pytorch学习|sklearn-SVM 模型保存、交叉验证与网格搜索
- OpenCV|OpenCV-Python实战(18)——深度学习简介与入门示例
- python|8. 文件系统——文件的删除、移动、复制过程以及链接文件
- 爬虫|若想拿下爬虫大单,怎能不会逆向爬虫,价值过万的逆向爬虫教程限时分享
- 分布式|《Python3网络爬虫开发实战(第二版)》内容介绍
- java|微软认真聆听了开源 .NET 开发社区的炮轰( 通过CLI 支持 Hot Reload 功能)