如何用python画组合图形_python_matplotlib画组合图
下圖是要畫的組合圖的樣式,用到的核心方法是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画组合图形_python_matplotlib画组合图的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 线性时变系统能用模型预测控制吗_线性系统
- 下一篇: python爬虫课件_Python爬虫教