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 = 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 = 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()

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_43287650/article/details/83117180