a618c5d8456fa3cbaf6654166ffb8dc2.png

python可视化一般可以通过以下三个子库来实现,看到一篇不错的文章推荐给大家。

matplotlib,seaborn,pyecharts 128种画图方法

matplotlib、seaborn、pyecharts可视化作图​whjtop.cn
3b7e5b74d98e5e42d7d938705937b6e4.png

本文将从二维绘图、三维绘图、金融图表三个方面来总结matplotlib库的使用。

1.二维绘图

主要绘图函数在matplotlib.pyplot子库中。

1.1一维数据集

#导入库
import numpy as np
import matplotlib.pyplot as plt

#生成20个标准正态分布随机数
np.random.seed(1000)
y=np.random.standard_normal(20)

#生成连续整数作为x值,并与y值个数相同
#len(y)计算y中元素个数
#range函数生成从0开始的一系列连续整数
x=range(len(y))

#plot函数需要x,y两组数值
plt.plot(x,y)

f6e5f17ce44ab719a4f490a892cabf3f.png
#操作网格线
plt.grid(True)
plt.plot(x,y)

6c29905fadd6de0fae7458ca240bde02.png
#操作坐标轴 有tight image等命令
#限定坐标轴最大值和最小值
plt.xlim(0,20)
plt.ylim(-2,2)
plt.plot(x,y)

#axis[xmin,xmax,ymin,ymax]也可以限定坐标轴极值
plt.axis([0,20,-2,2])
plt.plot(x,y)

5c41961a685c620f37c100270dda6064.png
#操作标签 x轴、y轴、标题
plt.xlabel('x值')
plt.ylabel('y值')
plt.title('折线图')
plt.plot(x,y)

cdef957c92c992c60c07e12d0fe4c058.png
#改变线条颜色、数据点属性
#黑色 圆点 虚线 linestyle='--'也可以替换为dashed linewidth改变线的粗细
plt.plot(x,y,color='k',marker='o',linestyle='--',linewidth=6)

d733fd67c0a91f98aa87395d1d3ee412.png

1.2二维数据集

两个数据集xy刻度不同,或需要以不同方式可视化,如一个线图一个柱状图。

#建立二维数组 20*2numpy ndarray
np.random.seed(1000)
y=np.random.standard_normal((20,2))

#不定义x,直接画图也可以
plt.plot(y)

fc25a53c29c4987a36b0e8b0443823d2.png
#'ro'表示红色圆点标记,在一些代码中经常看到
plt.plot(y,'ro')

a39e34ffdc31032ff0869148b8a7ee0b.png
#选择两个数据子集,添加标签
#plt.legend接受位置参数 plt.legend(loc=0) 0表示最佳位置 数字
plt.plot(y[:,0],color='r',lw=1,label='1st')
plt.plot(y[:,1],color='y',lw=4,label='2nd')
plt.legend(loc=0)

60ae5f728decf21b86b814456529a9b7.png
#将其中一个数据集扩大100倍后 作图观察
y[:,0]=y[:,0]*100
plt.plot(y)
#直接写y 与分组写 作图结果相同 见下图

dfa5b5e1ecc19ec24ed0ca84647dbdac.png
#加标签 legend
plt.plot(y[:,0],label='1st')
plt.plot(y[:,1],label='2nd')
plt.legend(loc=0)
#图中发现标签为2nd的数据集几乎呈水平,不能观察出数据走势

37505dee53fa528f353df38ad32ec13b.png

想解决以上问题,有两种方法

  • 使用两个y轴(左/右)
  • 使用两个子图(左/右、上/下)
#使用两个y轴 plt.twinx()增加一个y轴
ax1=plt.subplots()#不写不影响结果
plt.plot(y[:,0],color='c',label='1st')
plt.xlabel('x轴')
plt.ylabel('y1轴')
plt.legend(loc=0)
plt.twinx()
plt.plot(y[:,1],color='m',label='2nd')
plt.ylabel('y2轴')
plt.legend(loc=3)

4e84c72104d39e0fab545889f99eeb74.png
#使用两个子图
#一行两列 第一个子图
plt.subplot(1,2,1)
plt.plot(x,y[:,0])
#一行两列 第二个子图
plt.subplot(1,2,2)
#还可以改变子图类型 如柱状图
plt.bar(x,y[:,1],width=0.8)

2b39ab601b44a364fd2052b8ff5c88ff.png

2.三维绘图

#增加第三维数据集
c=np.random.randint(0,10,len(y))
plt.scatter(y[:,0],y[:,1],c=c,linewidths=2)
#颜色图例彩条
plt.colorbar()

fb266f6496e0f058d3f147fbbcec8ded.png

3.其他金融图表

  • 常规直方图
#常规直方图
y1=np.random.standard_normal((10,2))
plt.axis([-3,3,-3,3])
plt.hist(y1,bins=10)

af15647fda1eecaf3c02b6342bab5acb.png
  • 堆积直方图
#堆积直方图
plt.axis([-3,3,-3,6])
plt.hist(y1,rwidth=0.6,stacked=True)
#stacked表示堆积 rwidth条块宽度

9c6a09d5e4f8298bfa1d1b452ed3d08b.png
  • 箱线图
#箱线图
ax1=plt.boxplot(y1)

a2656c975c6b18e2cd17103ac0c95fbb.png
  • 蜡烛图(暂未涉及)
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐