簡體   English   中英

如何將特定軸添加到matplotlib子圖?

[英]How to add specific axes to matplotlib subplot?

我正在嘗試使用matplotlib制作矩陣圖。

使用特定的模塊windrose繪制各個圖,該模塊將windrose子類PolarAxes 但是,似乎在模塊中沒有定義任何投影,稱為子圖kwargs。 由於缺少某些子類參數,因此標准polar投影不起作用。

我已經測試了幾種方法,但都沒有成功(即使考慮到本文,也使用了seaborn地圖): https ://stackoverflow.com/a/25702476/3416205。 以下是我嘗試過的最接近的方法。 沒有正確創建與特定WindroseAxes關聯的新matplotlib投影,有什么方法可以做我想要的事情?

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
from windrose import WindroseAxes

df = pd.read_csv('https://raw.githubusercontent.com/AntoineGautier/Data/master/tmp.csv')
fig = plt.figure()
gs = gridspec.GridSpec(4, 2)

def wind_plot(x, y, title=None, axes=None, fig=None):
    ax = WindroseAxes.from_ax()
    ax.set_position(axes.get_position(fig))
    ax.bar(x, y, normed=True, opening=0.8, edgecolor='white', bins=[0, 2.5, 5, 7.5, 10])
    ax.set_title(title)

for (id_s, s) in enumerate(pd.unique(df.saison)):
    for (id_jn, jn) in enumerate(pd.unique(df.jn)):
        tmp = df.query('saison==@s & jn==@jn')
        _ = plt.subplot(gs[id_s, id_jn], polar=True)
        wind_plot(tmp.wd, tmp.ws, title=s + ' - ' + jn, axes=_, fig=fig)

plt.show()

windrose模塊的github頁面實際上提供了一個子圖示例: https : //github.com/scls19fr/windrose/blob/master/samples/example_subplots.py

以下作品。

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
from windrose import WindroseAxes

df = pd.read_csv('https://raw.githubusercontent.com/AntoineGautier/Data/master/tmp.csv')

fig = plt.figure(figsize=(20, 10))
gs = gridspec.GridSpec(2, 4)
gp = gs.get_grid_positions(fig)  # [bottom, top, left, right]

def wind_plot(x, y, title, fig, rect):
    ax = WindroseAxes(fig, rect)
    fig.add_axes(ax)
    ax.bar(x, y, normed=True, opening=0.8, edgecolor='white', bins=[0, 2.5, 5, 7.5, 10])
    ax.set_title(title, position=(0.5, 1.1))

for (id_s, s) in enumerate(pd.unique(df.saison)):
    for (id_jn, jn) in enumerate(pd.unique(df.jn)):
        tmp = df.query('saison==@s & jn==@jn')
        rect = [gp[2][id_s], gp[0][id_jn],
                gp[3][id_s]-gp[2][id_s],
                gp[1][id_jn]-gp[0][id_jn]]  # [left, bottom, width, height]
        wind_plot(tmp.wd, tmp.ws, s + ' | ' + jn, fig, rect)

plt.show()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM