matplotlib绘图

一、绘图步骤

import numpy as np
import matplotlib.pyplot as plt

# 一、画布参数:
# 1 修改字体
plt.rcParams['font.sans-serif']='SimHei'
# 2 修改符号显示:
plt.rcParams['axes.unicode_minus']=False
# 3 修改内部背景颜色(轴内颜色):
plt.rcParams['axes.facecolor']='#0D404D'
# 4 更改轴的颜色
plt.rcParams['axes.edgecolor']='white'
# 更改画布外面颜色在创建画布的时候就修改了
# 5 更改所有刻度的字体颜色
plt.rcParams['xtick.color']='white'
plt.rcParams['ytick.color']='white'

# 6 字体的更改
font={
     'family':'SimHei',  # 字体
      'weight':'normal',  # 宽度
      'size':12,  # 字的大小
      'color': 'white'  # 字的颜色
      }



# 1 创建画布
plt.figure(facecolor='#0D404D',figsize=(8,8))
# 2 指定x,y值:
x=np.arange(0,2*np.pi,0.01)
y=np.sin(x)

# 3 绘制图形:
# 散点图:
#camp:summer,rainbow,plasma
# plt.scatter(x,y,s=1,c=y,cmap='tab20c')
# c:颜色,alpha:透明度,s:size点的大小,cmap:colormap颜色地图
# edgecolors :点的边缘颜色,linewidths:点的边缘线的宽度
plt.scatter(x,y,s=100,c='c',alpha=0.3,edgecolors='hotpink',linewidths=1.2)

# 图形美化:
# (1)坐标轴名称:
plt.xlabel('x轴',fontdict=font)
plt.ylabel('y轴',rotation=90,fontdict=font)
# (2) 设置刻度:
# plt.xticks(x)
plt.yticks([-1,0,1])
# (3) 添加标题
plt.title('scatter',fontdict=font)
# (4) 截取图像的某块区域进行放大:
# plt.xlim((1,3))

# 一定要先保存再显示
# 4 保存图形:
plt.savefig('scatter.png')
# 5 显示图形:
plt.show()

二、多个图形绘制

import numpy as np
import matplotlib.pyplot as plt

# 一、画布参数:
# 1 修改字体
plt.rcParams['font.sans-serif']='SimHei'
# 2 修改符号显示:
plt.rcParams['axes.unicode_minus']=False
# 3 修改内部背景颜色(轴内颜色):
plt.rcParams['axes.facecolor']='#0D404D'
# 4 更改轴的颜色
plt.rcParams['axes.edgecolor']='white'
# 更改画布外面颜色在创建画布的时候就修改了
# 5 更改所有刻度的字体颜色
plt.rcParams['xtick.color']='white'
plt.rcParams['ytick.color']='white'

# 6 字体的更改
font={
     'family':'SimHei',  # 字体
      'weight':'normal',  # 宽度
      'size':12,  # 字的大小
      'color': 'white'  # 字的颜色
      }

# ===================一、一个图中绘制多条曲线===================
# plt.figure(figsize=(8,6),facecolor='#0D404D')
# x=np.arange(0,2*np.pi,0.1)
# y1=np.sin(x)
# y2=np.cos(x)
# # 绘制第一条
# plt.scatter(x,y1,c=y1,cmap='rainbow')
# # 绘制第二条
# plt.scatter(x,y2,c='hotpink')
# # 添加图例顺序不能乱,先画哪个图,就先标哪个,这样图例才能对应上
# plt.legend(['y=sinx','y=cosx'],facecolor='gray')
#
# plt.show()

# ====================二、绘制子图===================
# p1=plt.figure(figsize=(6,18),facecolor='#0D404D')
# # 添加第一个子图
# p1.add_subplot(3,1,1)
# x=np.arange(0,2*np.pi,0.1)
# y1=np.sin(x)
# plt.scatter(x,y1)
# plt.ylabel('Y',fontdict=font)
# # 添加第二个子图
# p1.add_subplot(3,1,2)
# x=np.arange(0,2*np.pi,0.1)
# y2=np.cos(x)
# plt.scatter(x,y2)
# # 添加第三个子图
# p1.add_subplot(3,1,3)
#
# plt.scatter(np.sin(x),np.cos(x))
#
# plt.show()
# 整个画板的标题:
plt.suptitle('我的画板标题',fontdict=font)
# 调整子图之间的间距
plt.subplots_adjust(left=0.1,hspace=0.8,top=0.9)
'''
hspace:上下子图之间的间距
wspace:左右子图之间的间距
'''
p1=plt.figure(figsize=(6,18),facecolor='#0D404D')
x=np.arange(0,2*np.pi,0.1)
# 添加第一个子图
p1.add_subplot(3,2,1)
plt.scatter(np.sin(x),np.cos(x))

p1.add_subplot(6,2,2)
plt.scatter(np.sin(x),np.cos(x))

p1.add_subplot(6,2,4)
plt.scatter(np.sin(x),np.cos(x))

p1.add_subplot(3,1,2)
plt.scatter(np.sin(x),np.cos(x))

p1.add_subplot(3,2,5)
plt.scatter(np.sin(x),np.cos(x))

p1.add_subplot(3,2,6)
plt.scatter(np.sin(x),np.cos(x))

plt.savefig('hhhhh.png')
plt.show()

三、不规则子图绘制

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


# 1 修改字体
plt.rcParams['font.sans-serif']='SimHei'
# 2 修改符号显示:
plt.rcParams['axes.unicode_minus']=False
# 3 修改内部背景颜色(轴内颜色):
plt.rcParams['axes.facecolor']='#0D404D'
# 4 更改轴的颜色
plt.rcParams['axes.edgecolor']='white'
# 更改画布外面颜色在创建画布的时候就修改了
# 5 更改所有刻度的字体颜色
plt.rcParams['xtick.color']='white'
plt.rcParams['ytick.color']='white'

# 6 字体的更改
font={
     'family':'SimHei',  # 字体
      'weight':'normal',  # 宽度
      'size':12,  # 字的大小
      'color': 'white'  # 字的颜色
      }
# 一、建立空白画布:
# plt.figure(figsize=(6,8),facecolor='#0D404D')

# 调整子图之间的间隔:
plt.subplots_adjust(hspace=0.4,wspace=0.6)
# 二、分割画布,将画布分为每个小单位;
# gs=GridSpec(5,4)

# 三、添加第一个子图
# plt.subplot(gs[:3,:2])
# x=np.arange(0,2*np.pi,0.1)
# y=np.sin(x)
# plt.scatter(x,y)
#
# plt.subplot(gs[:2,2:])
# y1=np.cos(x)
# plt.scatter(x,y1)
#
# plt.subplot(gs[3:,:2])
# plt.scatter(np.cos(x),np.sin(x))
#
# plt.subplot(gs[2:,2:])
# plt.scatter(0.5*np.cos(x),np.sin(x))

plt.figure(figsize=(8,8),facecolor='#0D404D')
gs=GridSpec(8,8)

plt.subplot(gs[:7,:1])
x=np.arange(0,2*np.pi,0.1)
y=np.sin(x)
plt.scatter(x,y)

plt.subplot(gs[:3,1:])
y1=np.cos(x)
plt.scatter(x,y1)

plt.subplot(gs[3:7,1:5])
plt.scatter(x,y)

plt.subplot(gs[3:6,5:])
plt.scatter(x,y)

plt.subplot(gs[6:7,5:])
plt.scatter(x,y)

plt.subplot(gs[-1,:])
plt.scatter(x,y)
plt.savefig('lll.png')
plt.show()

四、其他图形绘制

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']='#0D404D'
# 4 更改轴的颜色
plt.rcParams['axes.edgecolor']='blue'
# 更改画布外面颜色在创建画布的时候就修改了
# 5 更改所有刻度的字体颜色
plt.rcParams['xtick.color']='blue'
plt.rcParams['ytick.color']='blue'

# 6 字体的更改
font={
     'family':'SimHei',  # 字体
      'weight':'normal',  # 宽度
      'size':12,  # 字的大小
      'color': 'white'  # 字的颜色
      }
# 一、折线图
# plt.figure(facecolor='#0D404D',figsize=(8,8))
# x=np.arange(1,11,1)
# y=2*x+1
#
# plt.plot(x,y,
#          color='y',  # 线的颜色
#          marker='D',  # 点的样式
#          linestyle=':',  # 线的样式
#          markerfacecolor='m',  # 点的内部颜色
#          markersize=10,  # 点的大小
#          markeredgecolor='hotpink',  # 点的边缘颜色
#          alpha=0.4 )#点和线整体透明度
# 二、柱状图:只有高度有实际意义,横坐标表示柱子所在的位置,柱子宽度也没有意义

# plt.figure(facecolor='#0D404D')
# x=[1,2,3]
# y=[90,88,60]
# plt.bar(x,y)
# # 更改刻度显示
# plt.xticks(x,['python0831','python0903','python0330'])
# # 标注文本:
# for x,y in zip(x,y):
#     plt.text(x,y,y,fontdict=font,ha='center',va='center',bbox={'facecolor':'red','alpha':0.5,'edgecolor':'yellow'})
#     # x,y 是坐标 后边的y是标注的值,
#     # ha:水平位置,va垂直位置
#     # bbox:文本框,可设置透明度,框颜色。。。
#=====================================
# 柱状图 多图对比
# plt.figure()
# x1=[1,3]
# y1=[1000,800]
# plt.bar(x1,y1,color='green',edgecolor='black',linewidth=2)
# x2=[2,4]
# y2=[300,100]
# plt.bar(x2,y2,color='red')
# plt.xticks([1.5,3.5],[2019,2020])
#
# for x1,y1 in zip(x1,y1):
#     plt.text(x1,y1,y1,ha='center')
# for x2,y2 in zip(x2,y2):
#     plt.text(x2,y2,y2,ha='center')
# plt.legend(['男','女'],facecolor='gray')
# plt.savefig('1.png')
# plt.show()
# ===============================================
# 三、直方图:比较频数
# plt.figure()
# x=np.random.randn(10000)
# # 绘制直方图:
# plt.hist(x,bins=9)
#
# plt.show()
#==================================================
# 四、饼图
# plt.figure(figsize=(6,6))
# x=[1000,2000,3000]
# labels=['A','B','C']
# plt.pie(x,
#         labels=labels,  # 标签
#         autopct='%1.1f%%',  # 数值
#         explode=[0.1,0.02,0],  # 离圆心的距离
#         shadow=True,  # 阴影
#         centet=(1,1),  # 圆心的位置
#         )
# plt.show()
#======================================================
# 五、雷达图
# 1、等分角度:创建x值
# x=np.linspace(0,2*np.pi,3,endpoint=False)
# # 闭合x轴角度,将第一个值放到尾部位置
# x_concat=np.concatenate((x,[x[0]]))
# # y值,三个轴上的值
# y=[2,1,3,2]
# # 3、绘制雷达图
# plt.figure(figsize=(6,6))
# plt.polar(x_concat,y,marker='s')
# plt.xticks(x)
# plt.fill(x_concat,y,'pink')
# plt.show()
#=================================================
# 绘制五角星
x=np.linspace(2*np.pi/20,2*np.pi*(21/20),10,endpoint=False)
# 闭合x轴角度,将第一个值放到尾部位置
x_concat=np.concatenate((x,[x[0]]))
# y值,三个轴上的值
y=[3,1,3,1,3,1,3,1,3,1,3]
# 3、绘制雷达图
plt.figure(figsize=(6,6))
plt.polar(x_concat,y,marker='s')
plt.xticks(x)
plt.fill(x_concat,y,'pink')
plt.show()

你可能感兴趣的:(数据可视化)