matplotlib.pyplot 绘图应用--(散点图、折线图、饼图、条形图、箱线图)

一、散点图、折线图

import numpy as np
import matplotlib.pyplot as plt
#
plt.rcParams['font.sans-serif']='SimHei'
plt.rcParams['axes.unicode_minus']= False

#numpy版本为1.16.11.16.2 最新的1.16.3 load功能更新需设置
data=np.load('./populations.npz') #加载文件
def getKeys(data):
    ks=[]
    for i in data.keys():  #keys()方法为字典数据按key分开 与item()区分
        ks.append(i)
    return ks
keys=getKeys(data)
print(keys)
values = data[keys[0]][-3::-1,:]

name=data[keys[1]]

#plt.savefig('问题1-散点图',dpi=800)  #保存图片
plt.subplot(2,1,1)
plt.scatter(values[:,0],values[:,1],marker='o',c='g')

#plt.savefig('问题2-折线图',dpi=800)   #保存图片
plt.subplot(2,1,2)
plt.plot(values[:,0],values[:,1],marker='o',c='g')

plt.show()

二、饼图

import numpy as np
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']='SimHei'
plt.rcParams['axes.unicode_minus']= False
data=np.load('./populations.npz') #加载文件
def getKeys(data):
    ks=[]
    for i in data.keys():  #keys()方法为字典数据按key分开 与item()区分
        ks.append(i)
    return ks
keys=getKeys(data)
values = data[keys[0]][-3::-1,:]
name=data[keys[1]]

i,j=1,0 # 此处为男女人口比例
while(i<=4 and j <=24):
    plt.subplot(2,4,i)
    labels=[name[2][:4],name[3][:4]]
    sizes=[values[j][2]/values[j][1],values[j][3]/values[j][1]]
    plt.pie(sizes, labels=labels, autopct='%1.1f%%',shadow=True, startangle=90)
    # Equal aspect ratio ensures that pie is drawn as a circle.
    plt.axis('equal')  
    i+=1
    j+=6
m,n=5,0 #此处为城乡人口比例
while(m<=8 and n <=24):
    plt.subplot(2,4,m)
    labels=[name[4][:4],name[5][:4]]
    sizes=[values[n][4]/values[n][1],values[n][5]/values[n][1]]
    plt.pie(sizes, labels=labels, autopct='%1.1f%%',shadow=True, startangle=90)
    # Equal aspect ratio ensures that pie is drawn as a circle.
    plt.axis('equal')  
    m+=1
    n+=6
plt.show()

三、条形图

import numpy as np
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']='SimHei'
plt.rcParams['axes.unicode_minus']= False
data=np.load('./populations.npz') #加载文件
def getKeys(data):
    ks=[]
    for i in data.keys():  #keys()方法为字典数据按key分开 与item()区分
        ks.append(i)
    return ks
keys=getKeys(data)
values = data[keys[0]][-3::-1,:]
name=data[keys[1]]

N=len(values)
y1,y2,labels=[],[],[]
for i in range(N):
    y1.append(values[i][2])
    #print(values[i][2],values[i][3])
    y2.append(values[i][3])
    labels.append(values[i][0])
index=np.arange(N)
plt.subplot(1,2,1)       #重叠
bar_width =0.3
plt.bar(x=index,height= y1,color='g',width=bar_width)
plt.bar(index,y2,bar_width,color='r',bottom=y1)
plt.xticks(index+bar_width,labels)
plt.subplot(1,2,2)        #并排
index=np.arange(N)
plt.bar(x=index,height= y1,color='g',width=bar_width)
plt.bar(x=index + bar_width,height= y2,color='r',width=bar_width)
plt.xticks(index+bar_width,labels)  #设置x坐标为年份
plt.show()

四、箱线图

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 读取数据
score = pd.read_excel('./score.xlsx')   #需pip  xlrd库   
#没报错但就是弹出Unable to open 'hashtable_class_helper.pxi':
# Unable to read file (Error: File not found (c:\users\......\matplotlib绘图\pandas\_libs\hashtable_class_helper.pxi)).
#大概率为dataframe索引错误

score.head()

df = pd.DataFrame(score)
df.plot.box()
plt.show()

猜你喜欢

转载自blog.csdn.net/Chengang98/article/details/91477235