标签: subplot

如何在不同的子图中绘制pcolor colorbar - matplotlib

我试图在不同的子图中分割我的图.我想要实现的是在不同的子图中为子图放置一个颜色条.现在我正在使用:

# first graph
axes = plt.subplot2grid((4, 2), (0, 0), rowspan=3)
pc = plt.pcolor(df1, cmap='jet')

# second graph
axes = plt.subplot2grid((4, 2), (3, 0))
plt.pcolor(df2, cmap='Greys')

# colorbar
plt.subplot2grid((4, 2), (0, 1), rowspan=3)
plt.colorbar(pc) 
Run Code Online (Sandbox Code Playgroud)

但结果如下(注意留在颜色条上的不需要的空图): 错误的图表

如果没有左图,我该怎么办才能打印彩条?

谢谢

python plot matplotlib colorbar subplot

11
推荐指数
1
解决办法
2万
查看次数

更改python子图中的字体大小

我制作了一个双稳态的相位图,主图上有核线,并添加了一个子图,轨迹覆盖在它上面。但是,无论我尝试什么,我似乎都无法将 x 和 y 标签的字体大小增加到 20。

任何帮助将不胜感激。

尽管存在类似的问题,但上述查询的答案似乎不适用于此特定问题。

再次感谢!

import numpy as np
from scipy.integrate import odeint
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid.axislines import SubplotZero
from matplotlib import pylab
from pylab import linspace
from numpy import meshgrid
from numpy import hypot


a1 = 1.0 #(Rate constant)
g1 = 4.0 # Hill number for cdc2
b1 = 200.0 # Rate Constant
k1 = 30.0 #Michaelis Constant
v =1 #coefficient that reflects the strangth of the influence of Wee1 on Cdc2
a2 …
Run Code Online (Sandbox Code Playgroud)

python matplotlib font-size subplot

11
推荐指数
1
解决办法
5万
查看次数

在matplotlib中设置子图的大小

我想知道当图包含多个子图(在我的情况下为5×2)时如何设置子图的大小.无论我允许整个人物有多大,子图总是看起来很小.我希望能直接控制该图中子图的大小.代码的简化版本粘贴在下面.

import numpy as np
import matplotlib.pyplot as plt

x = np.random.randn(20)
y = np.random.randn(20)

fig = plt.figure(figsize=(20, 8))

for i in range(0,10):
    ax = fig.add_subplot(5, 2, i+1)
    plt.plot(x, y, 'o')
    ax.xaxis.set_visible(False)
    ax.yaxis.set_visible(False)
    # x and y axis should be equal length
    x0,x1 = ax.get_xlim()
    y0,y1 = ax.get_ylim()
    ax.set_aspect(abs(x1-x0)/abs(y1-y0))

plt.show()
fig.savefig('plot.pdf', bbox_inches='tight')
Run Code Online (Sandbox Code Playgroud)

python matplotlib subplot

11
推荐指数
1
解决办法
4万
查看次数

如何使用plotly subplots()删除重复的图例条目

使用plotly的subplots()时,如何删除图例中的重复项?

这是我的MWE:

library(plotly)
library(ggplot2)
library(tidyr)

mpg %>%
  group_by(class) %>%
  do(p = plot_ly(., x = ~cyl, y = ~displ, color = ~trans, type = 'bar')) %>%
  subplot(nrows = 2, shareX = TRUE, titleX = TRUE) %>%
  layout(barmode = 'stack')
Run Code Online (Sandbox Code Playgroud)

r ggplot2 subplot plotly r-plotly

11
推荐指数
2
解决办法
358
查看次数

matplotlib:当使用append_axes时,如何指示我想要添加子面板的轴?

我一直在看Matplotlib库中的示例"scatter hist".

目前,x/y子图分别位于顶部和右侧,即:

divider = make_axes_locatable(axScatter)
axHistx = divider.append_axes("top", 1.2, pad=0.1, sharex=axScatter)
axHisty = divider.append_axes("right", 1.2, pad=0.1, sharey=axScatter)
Run Code Online (Sandbox Code Playgroud)

但是,如果我将子图位置更改为:

divider = make_axes_locatable(axScatter)
axHistx = divider.append_axes("bottom", 1.2, pad=0.1, sharex=axScatter)
axHisty = divider.append_axes("right", 1.2, pad=0.1, sharey=axScatter)
Run Code Online (Sandbox Code Playgroud)

即将x子面板移动到底部,然后append_axes将y子图添加到x子图的右侧,而不是散点图的右侧.(我上传图片,但我还没有足够的声誉发布图片...... grrr)!

如何告诉append_axes我想将y子图附加到包含散点图的"主轴"的右侧?我猜我需要在某处再次指定对象axScatter(虽然我认为这divider = make_axes_locatable(axScatter)是为了什么?!)或者我猜测分隔符在窗口面板中设置了一个网格我需要告诉append_axes哪个单元格包含主轴.

谢谢,

亚历克斯

python matplotlib divider subplot

10
推荐指数
1
解决办法
1694
查看次数

如何消除子图和周围的差距

我在一个图中绘制了两个子图(2x1).我想删除两个子图之间的所有间距,并删除顶部子图的xlable和xlabel刻度.此外,我试图删除子图外的所有间距.我试试

set(gca, 'LooseInset', get(gca,'TightInset'))
Run Code Online (Sandbox Code Playgroud)

但它不起作用.现在我手动删除这些边距和标签,我需要处理60个数字并且手动执行所有这些操作非常耗时.有更好的方法吗?谢谢.

我也尝试了subtightplot,它有助于减少所有边距,但xlabel和ylabel也被剪切

margins=[0 0];
t = 0:0.01:10;
y1 = sin(t);
y2 = cos(t);
h1 = subtightplot(2,1,1, margins);
plot(t, y1);
ystr = {'sin(x)','(dimensionless)'}
hy1 = ylabel(ystr);
set(gca, 'fontsize', 14);
set(hy1, 'fontsize', 14);
set(gca, 'XTickLabel', [],'XTick',[])

h2 = subtightplot(2,1,2,margins);
plot(t, y2, 'r-o');
hx2=xlabel('frequency');
hy2=ylabel('amplitude');
set(gca, 'fontsize', 14);
set(hx2, 'fontsize', 14);
set(hy2, 'fontsize', 14);
Run Code Online (Sandbox Code Playgroud)

我也尝试了subplot_tight,但情况更糟

matlab margins subplot

10
推荐指数
1
解决办法
2万
查看次数

如何为子图提供一个共同的图例?

我正在尝试创建一个子图的图形.我不希望子图有传说,而是想要有一个整体传说.

我读到可以通过仅向最后一个子图添加图例并通过position特征legend或通过使用一个子图图形位置调整其在图中的位置(例如subplot(2,3,5.5)仅用于显示图例).我更喜欢第二种选择,虽然直到现在我还没有成功.有帮助吗?

这是我的代码:

SLS=figure();
hold on
subplot(3,2,1);
plot(t,u{1},t,u{2},t,u{3},t,u{4},t,u{5},t,u{6});
title('SLS Levels');
subplot(3,2,2);
plot(t,log_u{1},t,log_u{2},t,log_u{3},t,log_u{4},t,log_u{5},t,log_u{6});
title('SLS Logarithms');
subplot(3,2,3);
plot(t,I_u{1},t,I_u{2},t,I_u{3},t,I_u{4},t,I_u{5},t,I_u{6});
title('SLS Levels with Intercept');
subplot(3,2,4);
plot(t,log_I_u{1},t,log_I_u{2},t,log_I_u{3},t,log_I_u{4},t,log_I_u{5},t,log_I_u{6});
title('SLS Log. with Intercept');
subplot(3,2,5.5);
legend('GDP', 'C', 'I', 'G', 'Imp.', 'Exp.');
axis off
Run Code Online (Sandbox Code Playgroud)

matlab legend figure subplot matlab-figure

10
推荐指数
1
解决办法
1万
查看次数

如何为多图布局调整 Matplotlib/Seaborn 子图之间的空间

下图显示了 2 X 2 网格布局中的标准 Seaborn/Matplotlib 箱线图:

seaborn/matplotlib 示例箱线图

这几乎是我想要的,只是我想在图的第一行和第二行之间留出更多空间。第一行图​​的 X 轴标签与第二行图的标题之间的距离几乎不存在。我一直在玩这个线程中解释的参数:

StackOverflow 线程

这是我的相关代码:

    import math
    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    from matplotlib.backends.backend_pdf import PdfPages
    from PyPDF2 import PdfFileMerger
    import seaborn as sns
    num_cols = 2
    num_rows = int(math.ceil(tot_plots / float(num_cols)))
    fig, axes = plt.subplots(nrows=num_rows, ncols=num_cols, figsize=(16, 16))
    x_var = df_orig['hra']
    for idx, ax in enumerate(axes.flat):
        data_var = current_cols[idx]
        y_var = df_orig[data_var]
        title_str = ''
        sns.boxplot(x=x_var, y=y_var, ax=ax,
                    order=order, palette=color, showfliers=False)
        ax.set_title(data_var + title_str) …
Run Code Online (Sandbox Code Playgroud)

python matplotlib boxplot subplot seaborn

10
推荐指数
1
解决办法
1万
查看次数

如何自动设置子图的行数和列数

我想要在子图中生成和组织一定数量的数字,并且我想自动查找要在子图中指定的列和行的数量。到目前为止,我发现的最好方法是计算子图总数的平方根,将其四舍五入到上部整数,并自动删除空子图。但当子图数量增多时,这种方法就不是最好的了。您知道更好的方法吗?

import numpy as np
import matplotlib.pylab as plt


percentile = np.linspace(0.1,0.9,10)
test = np.linspace(0,10,123)
nb = int(np.sqrt(len(percentile))) + 1

# the "test" variable is not important. The "percentile" dictates how many subplots I want

fig, axs = plt.subplots(nb,nb, figsize=(15, 15), facecolor='w', edgecolor='k')

count = 0
for l in range(0,nb):
    for c in range(0,nb):
            
            if count < len(percentile):            
                axs[l,c].plot(test*percentile[count])

            else:
                axs[l,c].set_visible(False)
            
            count = count + 1
Run Code Online (Sandbox Code Playgroud)

python automation loops subplot

10
推荐指数
1
解决办法
951
查看次数

通过循环和函数填充matplotlib子图

我需要通过循环迭代绘制一个图的子图; 每次迭代都会调用另一个模块(=另一个py文件)中定义的函数,该函数会绘制一对子图.这是我尝试过的 - 唉不起作用:

1)在循环之前,创建一个具有足够行数和2列的图形:

 import matplotlib.pyplot as plt     
 fig, axarr = plt.subplots(nber_rows,2)
Run Code Online (Sandbox Code Playgroud)

2)在循环内部,在迭代编号iter_nber中,调用绘制每个子图的函数:

 fig, axarr = module.graph_function(fig,axarr,iter_nber,some_parameters, some_data)
Run Code Online (Sandbox Code Playgroud)

3)有问题的功能基本上是这样的; 每次迭代在同一行上创建一对子图:

 def graph_function(fig,axarr,iter_nber,some_parameters, some_data):

     axarr[iter_nber,1].plot(--some plotting 1--)
     axarr[iter_nber,2].plot(--some plotting 2--)

     return fig,axarr
Run Code Online (Sandbox Code Playgroud)

这不起作用.我在循环结束时得到一个空数字.我已经尝试了上面的各种组合,比如只在函数的返回参数中留下axarr,但无济于事.显然我不明白这个图及其子图的逻辑.

任何建议非常感谢.

python matplotlib subplot

9
推荐指数
1
解决办法
2万
查看次数