python数据可视化,matplotlib可视化绘图,⾃定义⼦图布
局,多区域
教程简介
最近需要为某个项⽬的matlab数据提供⼀套可视化的图表渲染结果
利⽤Python + Matplotlib,很⽅便的处理了数据,也很优质的呈现了数据结果,效果⾮常好,其中主要遇到了如下⼏个难点利⽤Matplotlib 实现多个图表的排版
加⼊数学公式图例
效果图为:
出图代码为:
def decode_bin(self,bin_folder,target_folder):
filepath = "{0}/{1}/{2}.bin".format(bin_folder,self._name,self._name)
imgfolder = "{0}/{1}".format(target_folder,self._name)
self.open_file(filepath)
#读取⽀路数(4)
matplotlib中subplotbranchs = ad_int()
print("⽀路数为:",branchs)
#读取画图变量长度(4)
times = ad_int()
print("画图变量为:",times)
imgindex = 1
for temp in range(branchs):
plt.figure(figsize=(16,12),facecolor='snow')
plt.subplots_adjust(hspace=0.5)
# 设置title,x,y
plt.d_infos[self._name][imgindex - 1]['title'], fontproperties="SimHei")
#设置完毕
#IP
x234567 = ad_double_array(times)
x1y2 = ad_double_array(times)
y1 = ad_double_array(times)
y3 = ad_double_array(times)
y5 = ad_double_array(times)
y6 = ad_double_array(times)
y7 = ad_double_array(times)
y4_1 = ad_double_array(times)
y4_2 = ad_double_array(times)
y4_3 = ad_double_array(times)
#左上
gs = GridSpec(3,3)
plt.subplot(gs[0,0])
plt.title("解调信号向量图")
plt.xlabel("I⽀路")
plt.ylabel("Q⽀路")
plt.scatter(x1y2,y1)
#右上
plt.subplot(gs[0, 1:])
plt.title("即时I⽀路输出")
plt.xlabel("时间/秒")
plt.plot(x234567,x1y2)
#中1
plt.subplot(gs[1, 0])
plt.title("载波环鉴相器输出")
plt.xlabel("时间/秒")
plt.ylabel("幅度")
plt.plot(x234567,y3)
#中2
cfg = plt.subplot(gs[1, 1:])
plt.title("相关结果")
plt.xlabel("时间/秒")
plt.plot(x234567,y4_1,label="$\sqrt{I_{E}^2 + Q_{E}^2}$")
plt.plot(x234567,y4_2,label="$\sqrt{I_{P}^2 + Q_{P}^2}$")
plt.plot(x234567,y4_3,label="$\sqrt{I_{L}^2 + Q_{L}^2}$")
plt.legend(loc="upper right",ncol=1)
#下1
plt.subplot(gs[2, 0])
plt.title("载波环环路滤波器输出")
plt.xlabel("时间/秒")
plt.ylabel("载波中频调整量/Hz")
plt.plot(x234567,y5)
#下2
plt.subplot(gs[2, 1])
plt.title("码环鉴相器输出")
plt.xlabel("时间/秒")
plt.ylabel("幅度")
plt.plot(x234567,y6)
#下3
plt.subplot(gs[2, 2])
plt.title("码环环路滤波器输出")
plt.xlabel("时间/秒")
plt.ylabel("码速率调整量/Hz")
plt.plot(x234567,y7)
plt.savefig("{0}/{1}.jpg".format(d_infos[self._name][imgindex - 1]['title']))
self.close()
plt.cla()
plt.close("all")
print("解析完毕")
技术点归纳
如何利⽤Matplotlib进⾏多个图表排版
GridSpec代表着⼀个布局对象,创建了⼀个3x3的布局对象,我们可以想象成⼀个九宫格,
gs = GridSpec(3,3)
我们可以通过类似操纵列表对象的⽅式,来指定每个⼦图的布局范围
plt.subplot(gs[0, 1:])
然后就可以安⼼绘图啦。
如何增加图例公式
matplotlib增加图例公式的⽅法和matlab⼀致,直接⽤matlab的公式字符串即可
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论