标签: subplot

删除死区或增加子图中的图形大小

我在matlab中遇到了问题.我输出一个图像,如示例所示,并通过print命令保存.我想要做的是保存图像,使得没有死空间,即我想删除保存的图像中的空白区域.

示例: 带死区的图像

黑色边框显示图像占据的总面积.这真是一个空间的浪费.我想删除它.我想要做的是:

没有死区的图像

我手动删除了图像周围的白色区域.但我想通过print命令自动执行此操作.可以吗?如果可能,标题仍然可以吗?即使它被删除然后也没关系,但如果标题可以保持更好.

matlab image-processing subplot

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

自动填充子图

我正在编写一个 python 脚本,该脚本将 (1) 获取每个子图的 y 值列表,以针对一组常见的 x 值进行绘图,(2) 使每个子图成为散点图并放置它在子图网格中的适当位置,并且(3)针对不同大小的子图网格完成这些任务。我的第三个语句的意思是:我使用的测试用例的结果是 64 个图,8 行和 8 列。我希望代码能够处理各种网格尺寸的任何大小的数组(大约在 50 到 80 个图之间),而不必每次运行代码时都返回并说“好的,这是行数和我需要的专栏。”

现在,我正在使用 exec 命令来获取 y 值,并且工作正常。我能够制作每个子图并让它填充网格,但前提是我手动输入所有内容(64 次做同样的事情只是愚蠢的,所以我知道必须有一种方法来自动化这个)。

任何人都可以提出一种可以实现这一目标的方法吗?我无法提供数据或我的代码,因为这是研究材料,不是我要发布的。如果这个问题非常基本或者我应该能够从现有文档中确定,请原谅。我对编程很陌生,可以使用一些指导!

python automation matplotlib subplot

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

Python:Matplotlib:matplotlib 中的垂直对齐图

我想从多个来源读取数据并将它们绘制在彼此之上。我需要绘制它们的方式是x-axis在底部有一个标签,而其他的都应该与相同的 对齐x-axis,无论有哪些点可用。

以下是问题的示例:

import matplotlib.pylab as plt
import random
import matplotlib.gridspec as gridspec

random.seed(20)

#create x-axis of my data
x1 = range(0,10) #different range than the next one
x2 = range(1,9)

#create data (just random data corresponding the x1,x2)
data1 = [random.random() for i in x1]
data2 = [random.random()*1000 for i in x2]

gs = gridspec.GridSpec(2,1)
fig = plt.figure()

#first plot
ax = fig.add_subplot(gs[0])
ax.plot(x1,data1)
ax.set_ylabel(r'Label One', size =16)
ax.get_yaxis().set_label_coords(-0.1,0.5)
plt.tick_params(
    axis='x',          # changes apply to …
Run Code Online (Sandbox Code Playgroud)

python plot matplotlib figure subplot

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

如何给出子图的组合标题?

我想给我的子情节提供一个组合标题,而不是单独标题每个情节.例如;

for pl=1:4
      subplot(2,2,pl)
      title('Test') 
end
Run Code Online (Sandbox Code Playgroud)

给我这个:在此输入图像描述

如果我用这个:

figure
title('Test') 
for pl=1:4
      subplot(2,2,pl)

end
Run Code Online (Sandbox Code Playgroud)

我没有得到任何头衔.

我希望我的输出如下:在此输入图像描述

matlab plot subplot matlab-figure

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

将图例放在子情节的地方

我想在中心子情节的地方放置一个图例(并将其删除)。我写了这段代码:

import matplotlib.pylab as plt
import numpy as np

f, ax = plt.subplots(3,3)
x = np.linspace(0, 2. * np.pi, 1000)
y = np.sin(x)

for axis in ax.ravel():
    axis.plot(x, y)
    legend = axis.legend(loc='center')

plt.show()
Run Code Online (Sandbox Code Playgroud)

我不知道如何隐藏一个中心情节。为什么传说没有出现?

示例图

此链接没有帮助http://matplotlib.org/1.3.0/examples/pylab_examples/legend_demo.html

python matplotlib legend subplot

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

将子图与颜色条对齐

我正在尝试共享imshow必须为方形和经典图的 a 的 x 轴:

  1. imshow 必须是方形的
  2. 带颜色条
  3. 下面的情节应该共享相同的轴(或至少看起来与 imshow 对齐)

我花了两天时间,现在我疯了。有人知道如何对齐它们吗?

顶部的方形 imshow,带有一个颜色条,下面是一个应该共享相同轴的图

用于生成图像的代码如下。

def myplot( Nbin=20 ):

X = np.random.rand(1000)
Y = np.random.rand(1000)
h2, yh2, xh2 = np.histogram2d( Y, X, bins=[Nbin,Nbin] )
h1, xh1 = np.histogram( X, bins=Nbin )
######################################
######################################
fig = plt.figure(  )
gs = gridspec.GridSpec( 3, 2 )
######################################
######################################
ax1 = plt.subplot( gs[:-1,:] )
im = plt.imshow( h2, interpolation='nearest', origin='lower',
                 extent=[xh2[0],xh2[-1],yh2[0],yh2[-1]] )
cb = plt.colorbar( im, ax=ax1 )
plt.xlim( xh1[0], xh1[-1] )
plt.ylim( xh1[0], …
Run Code Online (Sandbox Code Playgroud)

python matplotlib subplot imshow

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

在倾斜网格中排列 matplotlib 子图

使用 matplotlib,我想在每行具有不同列数的网格上显示多个子图,其中每个子图的大小大致相同,并且子图的排列方式使它们或多或少居中,如下所示:

模式中的轴网格 (2, 3, 2)

创建一个具有 2, 3, 2 模式的网格是一件相当简单的事情gridspec,但问题在于gridspec,不出所料,将它们与网格对齐,因此带有 2 个图的行中的图更宽:

网格与 gridspec 对齐

这是生成它的代码:

from matplotlib import gridspec
from matplotlib import pyplot as plt

fig = plt.figure()

arrangement = (2, 3, 2)
nrows = len(arrangement)

gs = gridspec.GridSpec(nrows, 1)
ax_specs = []
for r, ncols in enumerate(arrangement):
    gs_row = gridspec.GridSpecFromSubplotSpec(1, ncols, subplot_spec=gs[r])
    for col in range(ncols):
        ax = plt.Subplot(fig, gs_row[col])
        fig.add_subplot(ax)

for i, ax in enumerate(fig.axes):
    ax.text(0.5, 0.5, "Axis: {}".format(i), fontweight='bold',
            va="center", ha="center")
    ax.tick_params(axis='both', bottom='off', top='off', left='off',
                   right='off', labelbottom='off', labelleft='off') …
Run Code Online (Sandbox Code Playgroud)

python matplotlib subplot

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

如何在matplotlib中的子图下方添加图例?

我正在尝试在 3 列子图下方添加图例。

我尝试了以下方法:

fig, ax = plt.subplots(ncols=3)
ax[0].plot(data1)
ax[1].plot(data2)
ax[2].plot(data3)

ax_sub = plt.subplot(111)
box = ax_sub.get_position()
ax_sub.set_position([box.x0, box.y0 + box.height * 0.1,box.width, box.height * 0.9])
ax_sub.legend(['A', 'B', 'C'],loc='upper center', bbox_to_anchor=(0.5, -0.3),fancybox=False, shadow=False, ncol=3)
plt.show()
Run Code Online (Sandbox Code Playgroud)

然而,这只会创建一个空帧。当我注释掉 ax_sub 部分时,我的子图显示得很好(但没有图例......)...

非常感谢!

这与How to put the legend out of the plot密切相关

python matplotlib legend subplot

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

在所有子图中绘制水平线

我正在使用 python 并找到了几个解决方案来做到这一点。但它需要创建每个单独的子图。但是因为有一个参数你可以做subplot=True,我想知道有没有办法在一行代码中做到这一点......你怎么说sharey=True,你能让它“共享”一个水平常量吗?

我一直在玩它。起初,它只显示在最后一张图表上,但现在根本没有显示。

import matplotlib.pyplot as plt

line_up_points.plot(subplots=True, layout=(3, 3),sharey=True, figsize=(18, 12))
plt.legend(loc='best')
plt.axhline(y=125.08, color='r')
Run Code Online (Sandbox Code Playgroud)

这是它显示的内容:

在此处输入图片说明

但我想在 y=125.08 处的每个子图上都有一条水平线

没有单独创建 7 个不同图形的任何想法?

python plot subplot

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

Matplotlib 多个散点图 - 减小 svg 文件大小

我在 Matplotlib 中生成了一个由 50 个子图组成的图。在这些子图中的每一个中,我都有一个包含大约 3000 个数据点的散点图。我这样做是因为我只想概览我正在处理的文档中的不同散点图。

到目前为止,这也有效并且看起来不错,但问题显然是我得到的 SVG 文件非常大(大约 15 MB)。Word 无法处理这么大的 SVG 文件。

所以我的问题是:有没有办法优化这个 SVG 文件?散点图中的许多数据点彼此重叠,因此我想应该可以在不更改可见输出的情况下删除其中许多“不可见”的数据点。(所以在 illustrator 中这样的事情似乎是我想要做的:Link)是否也可以在 Inkscape 中做这样的事情?甚至直接在 Matplotlib 中?

我知道我只能生成一个 PNG 文件,但我更喜欢在我的文档中将绘图作为矢量图形。

svg matplotlib scatter-plot inkscape subplot

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