python_matplotlib画组合图

作者: Kedi | 来源:发表于2016-03-08 11:09 被阅读1617次

下图是要画的组合图的样式,用到的核心方法是plt.axes方法。方法内的参数是一个list,由左下角坐标,宽,高组成:[x,y,w,h](图中打勾处),注意在构建list的时候考虑进去图与图的间隙,图中的0.02


组合图样式

自定义子图

#自定义子图区域,需要先构建一个list
#由左下角坐标,宽,高组成,来生成子图[x,y,w,h]
left_x,left_y=0.1,0.1
width,height=0.65,0.65
left_xh=left_x+width+0.02
left_yh=left_y+height+0.02

scatter_area=[left_x,left_y,width,height]
hist_x=[left_xh,left_y,0.2,height]
hist_y=[left_x,left_yh,width,0.2]

plt.figure(1, figsize=(8, 8))
#生成子图的方法用到plt.axes
area_scatter=plt.axes(scatter_area)
area_histx=plt.axes(hist_x)
area_histy=plt.axes(hist_y)

plt.show()
自定义子图

再在每个图里添加要画的曲线

最终结果

结果

难点是怎么进行坐标轴的统一,步骤如下,先画好散点图

#统计散点图,画概率分布图
#设置概率分布图的bins的宽度
binwidth=0.25
#统计最大的x值,最大的y值
#np.fabs()返回绝对值
xymax=np.max([np.max(np.fabs(x)),np.max(np.fabs(y))])
#bin的数量
N_bins=int(xymax/binwidth)+1
#最大坐标
lim=N_bins*binwidth
#最小坐标
nlim=-lim
#坐标轴的分布
#注意:np.arange(1,5,1)>>>[1,2,3,4],没有最后的5,所以最大值应选用lim+binwidth
bins=np.arange(nlim,lim+binwidth,binwidth)
#根据取得的坐标分布,将散点图的坐标轴与此对应
area_scatter.set_xlim(nlim,lim)
area_scatter.set_ylim(nlim,lim)
#设置概率分布图的坐标
area_histx.set_xlim(area_scatter.get_xlim())
area_histy.set_ylim(area_scatter.get_ylim())

完整程序及注释

#组合图
import numpy as np
from matplotlib import pyplot as plt
# the random data
x = np.random.randn(1000)
y = np.random.randn(1000)
#自定义子图区域,需要先构建一个list,由左下角坐标,宽,高组成,来生成子图[x,y,w,h]
left_x,left_y=0.1,0.1
width,height=0.65,0.65
left_xh=left_x+width+0.02
left_yh=left_y+height+0.02

scatter_area=[left_x,left_y,width,height]
hist_x=[left_x,left_yh,width,0.2]
hist_y=[left_xh,left_y,0.2,height]


plt.figure(1, figsize=(8, 8))
#生成子图的方法用到plt.axes
area_scatter=plt.axes(scatter_area)
area_histx=plt.axes(hist_x)
area_histy=plt.axes(hist_y)

#画散点图
area_scatter.scatter(x, y)

#统计散点图,画概率分布图
#设置概率分布图的bins的宽度
binwidth=0.25
#统计最大的x值,最大的y值
#np.fabs()返回绝对值
xymax=np.max([np.max(np.fabs(x)),np.max(np.fabs(y))])
#bin的数量
N_bins=int(xymax/binwidth)+1
#最大坐标
lim=N_bins*binwidth
#最小坐标
nlim=-lim
#坐标轴的分布
bins=np.arange(nlim,lim+binwidth,binwidth)
#根据取得的坐标分布,将散点图的坐标轴与此对应
area_scatter.set_xlim(nlim,lim)
area_scatter.set_ylim(nlim,lim)
#画出概率分布图
area_histx.hist(x, bins=bins)
area_histy.hist(y, bins=bins, orientation='horizontal')
#设置概率分布图的坐标
area_histx.set_xlim(area_scatter.get_xlim())
area_histy.set_ylim(area_scatter.get_ylim())
plt.show()

相关文章

  • python_matplotlib画组合图

    下图是要画的组合图的样式,用到的核心方法是plt.axes方法。方法内的参数是一个list,由左下角坐标,宽,高组...

  • python_matplotlib画三维图

    各种3d画图参考网站其他种类图参考网站 用二维泡泡图表示三维数据 泡泡的坐标2维,泡泡的大小三维,使用到的函数 其...

  • 零基础绘画学习第22天:八棱柱和斜面圆柱的组合画法-半成品

    今天开始画组合了。 看着图简单,可是开始画我就觉得太难了,主要还是自学比较难。 视频不清晰,书本不详细,又找实体图...

  • linux c/c++面试知识点整理(二)

    11、关联、聚合、组合的区别 主要是在画uml类图时,有关联、聚合和组合的说法。 关联,是一种很弱的联系...

  • Day1 UML图

    要画类图和时序图: 组合:继承: 略实现: 接口依赖: 引用和被引用类关联: 引用和被引用类聚合:个体和整体

  • 有一种冷,叫你妈觉得你冷

    (图2是手机画的,背影;图1是倒着画的,自我感觉挺适合意境的,不知道这样组合的编排效果怎么样?) 刚刚路过幼儿园,...

  • 禅绕画图样——6.牛毛草

    今天画牛毛草,我很喜欢牛毛草,因为很多组合图都可以画。 然后各种“群魔乱舞”!画完感觉有点单调,可以用铅笔在画一次...

  • 每日一画『20190115』

    藤蔓与花的组合 【一】手绘日签图 【冉绘】•【禅绕画】•【早安心语】 『Doing what you like i...

  • julia plots gr画图系列

    一、如何画多个子图组合的图,以及修改标题和曲线名字 目前我还没法解决显示中文的问题 最终效果 要修改的参数 核心代...

  • 分享几个木工典型的组合家具柜

    分享几个木工典型的组合: 图1-2榻榻米+书桌+衣柜+书柜组合; 图3-4书桌+书架+储藏柜组合; 图5-6砖砌橱...

网友评论

    本文标题:python_matplotlib画组合图

    本文链接:https://www.haomeiwen.com/subject/zbtzkttx.html