matplotlib绘图-----全

一.导入模块

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.gridspec import GridSpec

二.画布参数

# 1.修改字体,显示汉字
plt.rcParams['font.sans-serif']='SimHei'
# 2.修改符号显示
plt.rcParams['axes.unicode_minus']=False
# 3.修正背景颜色
plt.rcParams['axes.facecolor']='#FFFFCC'
# plt.rcParams['axes.facecolor']='black'
# plt.rcParams['axes.facecolor']='darkslategrey'
# 4.更改轴的颜色
plt.rcParams['axes.edgecolor']='pink'
# 5.更改刻度字体颜色
plt.rcParams['xtick.color']='black'
plt.rcParams['ytick.color']='black'
# 6.字体更改
font={
    'family':'SimHei',     # 字体
    'weight':'normal',     # 字的宽度
    'size':20,             # 大小
    'color':'black'        # 颜色
}

三.读取文件

w_file=np.load(r'E:\pythonwork\数据分析\5\populations.npz',allow_pickle=True)
# 获取data里的数据
arr1=w_file['data.npy']
arr2=w_file['feature_names.npy']
arr_2=arr2[1:]
arr4=arr1[:-2,:][::-1]

1.创建画布


plt.figure(figsize=(18,16),facecolor='#FFFF99')
gs=GridSpec(2,2)

2.坐标轴

# x=np.arange(0,len(arr4),1)
x=np.arange(1,2*len(arr4)+1,2)
x2=x+1
x1=arr4[:,0]     # 时间
y1=arr4[:,1]     # 年末总人口(万人)
y2=arr4[:,2]     # 男性人口(万人)
y3=arr4[:,3]     # 女性人口(万人)
y4=arr4[:,4]     # 城镇人口(万人)
y5=arr4[:,5]     # 乡村人口(万人)

3.画图

3.1折线图

plt.subplot(gs[0,:])
# 坐标轴及标题
plt.xlabel('年份',fontdict=font,loc='right')
plt.ylabel('人数',fontdict=font,loc='top')
plt.title('1996-2015人口统计',fontdict=font)
plt.plot(x1,y1,c='y',
#          color='c',                    # 线的颜色
#          linestyle='-.',               # 折线的样式
#          markerfacecolor='hotpink',    # 点的颜色
#          markeredgecolor='hotpink'     # 点的边缘颜色
#          alpha=0.8                     # 透明度
         marker='>',                   # 点的样式
         markerfacecolor='yellow',     # 点的颜色
         markersize=10,                # 点的大小
         )
plt.plot(x1,y2,c='orange',
         marker='<',                   # 点的样式
         markerfacecolor='orange',     # 点的颜色
         markersize=10,                # 点的大小
         )
plt.plot(x1,y3,c='r',
         marker='o',                   # 点的样式
         markerfacecolor='red',        # 点的颜色
         markersize=10,                # 点的大小
         )
plt.plot(x1,y4,c='g',
         marker='^',                   # 点的样式
         markerfacecolor='green',      # 点的颜色
         markersize=10,                # 点的大小
         )
plt.plot(x1,y5,c='b',
         marker='*',                   # 点的样式
         markerfacecolor='blue',       # 点的颜色
         markersize=10,                # 点的大小
         )
# 图例
a=plt.legend(arr_2,facecolor='#CCFFFF')

3.2柱状图

plt.subplot(gs[1,0])
plt.title('柱状图1',fontdict=font)
# x,y值
x1=[1,4,6]
y1=[1000,300,600]
x2=[2,5]
y2=[800,100]
# 添加坐标轴刻度及坐标轴
plt.xticks([1.5,4.5],['男','女'],rotation=45)
plt.xlabel('x轴',fontdict=font,loc='right')
plt.ylabel('y轴',fontdict=font,loc='top')

# edgecolor和 x1 个数不需要对应, linewidth 是一个或者与 x1 个数对应
# 绘制柱状图
plt.bar(x1,y1,color='#FFCCCC',width=0.5,edgecolor=['#FFCCCC','pink'],linewidth=[2,1,3])
plt.bar(x2,y2,color='#CCCCCC',width=0.5)

# 数组拼接
x1.extend(x2)     # 或者x=x1+x2
y1.extend(y2)     # 或者y=y1+y2
for x,y in zip(x1,y1):
    plt.text(x,y+2,y,                   # 文本标注
             fontdict=font,
             ha='center',               # 水平居中
             va='center',               # 垂直居中
             bbox={                     # 文本框
                 'facecolor':'#CCFFFF', # 框填充颜色
                 'alpha':0.8,           # 文本透明度
                 'edgecolor':'#CCFFFF'  # 文本边缘色
             })
# 添加图例
plt.legend(['2019','2020'],facecolor='#CCFFFF')

3.3直方图

plt.subplot(gs[1,1])
plt.title('直方图',fontdict=font)

x=np.random.randn(10000)
# x=np.random.rand(10000)
plt.xlabel('x轴',fontdict=font,loc='right')
plt.ylabel('人数',fontdict=font,loc='top')

# 绘制直方图
bins=[-0.01,0.2,0.4,0.6,0.8,1.01]
# plt.hist(x,bins=5)
plt.hist(x,bins=bins,log=False,color='#FFCCCC',rwidth=1)
plt.show()

在这里插入图片描述

3.4饼图

plt.title('饼图',fontdict=font)
# 数据
x=[100,200,300]
labels=['A','B','C']
labels1=['D','E','F']
color=['#FFFFCC','#CCFFFF','#FFCCCC']
color1=['#99CCFF','#CCFF99','#CCCCCC']
# 饼图1
# patches,l_text,p_text是为了得到饼图的返回值,p_text是饼图内部的文本,l_text是饼图外部的返回值
patches,l_text,p_text =\
    plt.pie(x,
            colors=color,
            explode=[0.02,0.01,0.01],     # 每块饼图离圆心的距离
            labels=labels,                # 刻度显示
            autopct='%1.1f%%',            # 显示百分数,一位小数
            shadow=True,                  # 显示影阴部分
            center=(0,0),                 # 饼图中心坐标
            pctdistance=0.5,            # 百分比的text离圆心的距离
            startangle=90,              # 默认值0,表示从0度开始逆时针旋转的第一块
            labeldistance=0.8,          # 文本的位置离圆心的距离
            )
# 改变饼图文本的大小
for t in p_text:
    t.set_size(50)
for t in l_text:
    t.set_size(50)
# 设置x,y轴刻度一致才能是圆形
plt.axis('equal')
plt.legend()

# 饼图2
patches,l_text,p_text =\
    plt.pie(x,
            colors=color1,
            explode=[0.02,0.01,0.01],     # 每块饼图离圆心的距离
            labels=labels1,                # 刻度显示
            autopct='%3.1f%%',            # 显示百分数,一位小数
            shadow=True,                  # 显示影阴部分
            center=(1,1),                 # 饼图中心坐标
            pctdistance=0.5,            # 百分比的text离圆心的距离
            startangle=-45,              # 默认值0,表示从0度开始逆时针旋转的第一块
            labeldistance=0.8,          # 文本的位置离圆心的距离
            )

# 改变饼图文本的大小
for t in p_text:
    t.set_size(50)
for t in l_text:
    t.set_size(50)
# 设置x,y轴刻度一致才能是圆形
plt.axis('equal')
# 添加图例
plt.legend()
plt.show()

在这里插入图片描述

3.5雷达图

plt.title('雷达图',fontdict=font)
# 1,等分角度 endpoint=False 等分x值
x=np.linspace(0,2*np.pi,3,endpoint=False)

# 闭合角度问题,将第一个值放到尾部位置
x_concat=np.concatenate((x,[x[0]]))

# 闭合时最后加上起始值
y=[2,1,3,2]

# 绘制雷达图, 此处参数可以参照 折线图 的参数
plt.polar(x_concat,y,marker='s')
# 刻度显示
plt.xticks(x,['x','y','z'])
# 内部填充色及透明度
plt.fill(x_concat,y,'hotpink',alpha=0.6)
plt.show()

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值