我试图在不同的子图中分割我的图.我想要实现的是在不同的子图中为子图放置一个颜色条.现在我正在使用:
# 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)
但结果如下(注意留在颜色条上的不需要的空图):

如果没有左图,我该怎么办才能打印彩条?
谢谢
我制作了一个双稳态的相位图,主图上有核线,并添加了一个子图,轨迹覆盖在它上面。但是,无论我尝试什么,我似乎都无法将 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) 我想知道当图包含多个子图(在我的情况下为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) 使用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) 我一直在看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哪个单元格包含主轴.
谢谢,
亚历克斯
我在一个图中绘制了两个子图(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,但情况更糟
我正在尝试创建一个子图的图形.我不希望子图有传说,而是想要有一个整体传说.
我读到可以通过仅向最后一个子图添加图例并通过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) 下图显示了 2 X 2 网格布局中的标准 Seaborn/Matplotlib 箱线图:
这几乎是我想要的,只是我想在图的第一行和第二行之间留出更多空间。第一行图的 X 轴标签与第二行图的标题之间的距离几乎不存在。我一直在玩这个线程中解释的参数:
这是我的相关代码:
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) 我想要在子图中生成和组织一定数量的数字,并且我想自动查找要在子图中指定的列和行的数量。到目前为止,我发现的最好方法是计算子图总数的平方根,将其四舍五入到上部整数,并自动删除空子图。但当子图数量增多时,这种方法就不是最好的了。您知道更好的方法吗?
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) 我需要通过循环迭代绘制一个图的子图; 每次迭代都会调用另一个模块(=另一个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,但无济于事.显然我不明白这个图及其子图的逻辑.
任何建议非常感谢.