标签: subplot

OpenCV (Python) 视频子图

我试图在同一个图中显示两个 OpenCV 视频源作为子图,但找不到如何做到这一点。当我尝试使用时plt.imshow(...), plt.show(),窗口甚至不会出现。当我尝试使用 时cv2.imshow(...),它显示两个独立的数字。我真正想要的是子图:(。有什么帮助吗?

这是我到目前为止的代码:

import numpy as np
import cv2
import matplotlib.pyplot as plt

cap = cv2.VideoCapture(0)
ret, frame = cap.read()

while(True):
    ret, frame = cap.read()
    channels = cv2.split(frame)
    frame_merge = cv2.merge(channels)

    #~ subplot(211), plt.imshow(frame)
    #~ subplot(212), plt.imshow(frame_merged)
    cv2.imshow('frame',frame)
    cv2.imshow('frame merged', frame_merge)
    k = cv2.waitKey(30) & 0xff
    if k == 27:
        break

cap.release()
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)

更新:理想情况下,输出应该类似于:

OpenCV 视频的子图

python opencv matplotlib subplot

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

Matplotlib;向子图添加圆圈 - 问题/困惑

有点奇怪,我显然错过了一些东西,但我得到了一些非常奇怪的行为,而且我无法弄清楚我做错了什么。

我有一个带有网格格式子图的图(为了这篇文章,我只说一个 2 × 2 网格)。我想在每个上绘制一些东西并添加一个圆圈。应该很容易,但它并不像我预期的那样。

示例代码1:

import matplotlib.pyplot as plt

x = [ -1.0, -0.5, 0.0, 0.5, 1.0 ]
y = [  0.7,  0.2, 1.0, 0.0, 0.0 ]

circle = plt.Circle( ( 0, 0 ), 1 )

fig, axes = plt.subplots( 2, 2 )

axes[ 0, 0 ].plot( x, y )
axes[ 1, 1 ].plot( x, y )

axes[ 0, 0 ].add_patch( circle )
axes[ 1, 1 ].add_patch( circle )

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

输出1:

输出1

示例代码2:

import matplotlib.pyplot as plt

x …
Run Code Online (Sandbox Code Playgroud)

python geometry matplotlib subplot

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

使 matplotlib.pyplot 颜色条与波形和频谱图一起跨越两行

使用 matplotlib.pyplot,我有两个图。一种是音频文件的波形。第二个是同一音频的频谱图。我希望波形位于频谱图的正上方(相同的 x 轴,并对齐在一起)。我还想要一个频谱图的颜色条。

问题 - 当我放入颜色条时,它附加到频谱图行,并且波形在颜色条上延伸(即不再与频谱图时间对齐并且比频谱图更宽)。

我想,我已经接近解决方案了,但我只是不太清楚我做错了什么,或者需要改变什么才能让它按照我想要的方式工作。希望有人能指出我正确的方向!

使用以下 python 代码(我尽可能将代码设为 MWE):

import matplotlib
matplotlib.use("TkAgg")
from scipy.io import wavfile
from matplotlib import mlab
from matplotlib import pyplot as plt
import numpy as np
from numpy.lib import stride_tricks

samplerate, data = wavfile.read('FILENAME.wav')

times = np.arange(len(data))/float(samplerate)

plt.close("all")

####
#Waveform
####
fig, axes = plt.subplots(nrows=2, ncols=2, figsize=(13.6, 7.68))

plt.subplot(211)
plt.plot(times, data, color='k') 

plt.xlabel('time (s)')
plt.xlim(times[0], times[-1])

max_amp = max(abs(np.amin(data)), abs(np.amax(data)))
min_amp = (max_amp * -1) - abs(np.amin(data) - np.amax(data))/50
max_amp = max_amp + …
Run Code Online (Sandbox Code Playgroud)

python matplotlib colorbar subplot

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

扩展了 2 个子图的图例

我怎样才能让相同的图例出现在 2 个子图上,并使其扩展到 2 个子图上。有人知道吗,如果我必须单独精确每个子图的 y 标签(如果它是相同的)(该图用于一篇科学论文) ?我知道后一个问题与计算无关,但如果有人知道答案,我将不胜感激。

对于图例的放置,我使用:

        ax[0].legend(bbox_to_anchor=(0., 1.02, 1., .102), loc=3,
               ncol= 4, mode="expand", borderaxespad=0)
Run Code Online (Sandbox Code Playgroud)

地块

python matplotlib legend subplot

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

每行共享 y 轴

我有一个关于使用 matplotlib 的子图每行共享 y 轴的问题。我有以下脚本作为示例。sharey=True当我在子图函数中使用作为参数时,ax[x, x].set_ylim(n, n)然后它使用我使用的最后一个参数。

import matplotlib.pyplot as plt

fig, ax = plt.subplots(3, 2, figsize=(8, 10), sharey=True, gridspec_kw={'height_ratios': [1, 2, 2]})
ax[0, 0].set_ylim(-1.5, 1.5)
ax[1, 0].set_ylim(-40, 40)
ax[1, 1].set_ylim(-40, 40)
ax[2, 0].set_ylim(-40, 40)
ax[2, 1].set_ylim(-40, 40)
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以让我每行共享 y 轴?

python matplotlib python-3.x subplot

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

如何通过数字指定gridspec位置?

我阅读了使用 GridSpec 自定义子图位置中的说明,并尝试了以下代码并获得了绘图布局:

 import matplotlib.gridspec as gridspec  
    gs = gridspec.GridSpec(3, 3)
    ax1 = plt.subplot(gs[0, :])
    ax2 = plt.subplot(gs[1, :-1])
    ax3 = plt.subplot(gs[1:, -1])
    ax4 = plt.subplot(gs[-1, 0])
    ax5 = plt.subplot(gs[-1, -2])
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我知道这gridspec.GridSpec(3, 3)将给出 3*3 布局,但这意味着什么gs[0, :] gs[1, :-1] gs[1:, -1] gs[-1, 0] gs[-1, -2]?我在网上查找但没有找到详细的解释,我也尝试更改索引但没有找到规律的模式。谁能给我一些解释或者给我一个关于这个的链接?

python matplotlib subplot matplotlib-gridspec

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

如何在matplotlib中调整每两行子图之间的空间

我希望水平调整子图之间的空间。特别是每两行之间。我可以使用fig.subplots_adjust(hspace=n). 但是是否可以将其应用于每第二行?

import matplotlib.pyplot as plt

fig, ax = plt.subplots(figsize = (10,10))
plt.style.use('ggplot')
ax.grid(False)

ax1 = plt.subplot2grid((5,2), (0, 0))
ax2 = plt.subplot2grid((5,2), (0, 1))
ax3 = plt.subplot2grid((5,2), (1, 0))  
ax4 = plt.subplot2grid((5,2), (1, 1))
ax5 = plt.subplot2grid((5,2), (2, 0))
ax6 = plt.subplot2grid((5,2), (2, 1)) 
ax7 = plt.subplot2grid((5,2), (3, 0))
ax8 = plt.subplot2grid((5,2), (3, 1))

fig.subplots_adjust(hspace=0.9)
Run Code Online (Sandbox Code Playgroud)

使用下面的子图,我希望在第 2 行和第 3 行之间添加一个空格,其余部分保持原样。 在此处输入图片说明

python plot matplotlib subplot

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

在 plt.plot 的 for 循环中更改标题并创建 6x16 子图

secondHold = np.zeros((96,30))

channel = ['channel' for x in range(96)]


for i in range (96):
    BlankBinsx = bins[blankposition,0:30,i]
    StimBinsx = bins[NonBlankPositions,0:30,i]
    meanx = BlankBinsx.mean(axis=0);
    stimmeanx = StimBinsx.mean(axis=0);
    for j in range(30):
        hold[i][j] = meanx[j];
        secondHold[i][j] = stimmeanx[j];
    plt.subplots(1, 1, sharex='all', sharey='all')
    plt.plot(hold[i], label='stimulus')
    plt.plot(secondHold[i], label='Blank Stimulus')
    plt.title('Channel x')
    plt.xlabel('time (ms)')
    plt.ylabel('Avg Spike Rate')
    plt.legend()
    plt.show()

Run Code Online (Sandbox Code Playgroud)

我正在通过 for 循环创建 96 个不同的图形,我希望它也标记图形(即,第一个图形是'Channel 1',图形二'Channel 2'等等。我尝试过ax.set_title但无法弄清楚如何使它与字符串和数字。

此外,我希望将图形打印为 6x16 子图,而不是一列中的 96 个图形。

python for-loop matplotlib subplot

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

Plotly:如何将轴布局添加到子图中?

鉴于我有来自此链接的以下代码:

from plotly.subplots import make_subplots
import plotly.graph_objects as go

fig = make_subplots(rows=1, cols=2)

fig.add_trace(
    go.Scatter(x=[1, 2, 3], y=[4, 5, 6]),
    row=1, col=1
)

fig.add_trace(
    go.Scatter(x=[20, 30, 40], y=[50, 60, 70]),
    row=1, col=2
)

fig.update_layout(height=600, width=800, title_text="Subplots")
fig.show()
Run Code Online (Sandbox Code Playgroud)

这段代码的问题是,xaxisyaxis没有任何标签。除此之外,当前代码仅对所有图应用一个标题,但是我想对每个散点图应用不同的标题

我怎样才能做到这一点?

python subplot plotly

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

有没有办法在 python matplotlib 中设置特定子图的背景颜色?

我想使用 制作一个多图subplot,这样一个或多个特定子图的背景颜色与其他子图不同,如下例所示:

例子

请注意,我对设置子图外部补丁的背景颜色而不是图内部的背景颜色感兴趣(可以使用facecolor='gray')。这是因为我想绘制密度图并且我想将其中的一些与其余的区分开来。

我已经发现等类似的问题例如其中副区的每行有不同的背景颜色,但我不能够修改代码,以便可在特定副区(比如(1,2)所施加的颜色,(1 ,3), (2,1) 和 (2,2) 如上图所示)。

这是一个示例代码:

import numpy as np
import matplotlib.pyplot as plt

fig, subs = plt.subplots(3,3,figsize=(10,10))

images = []
for i in range(3):
    for j in range(3): 
        data = np.random.rand(20,20)
        images.append(subs[i, j].imshow(data))
        subs[i, j].label_outer()

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

任何帮助将不胜感激。

python matplotlib subplot

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