[英]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.