标签: subplot

如何在 gnuplot 多图模式下选择子图

有什么方法可以像在 Matlab 中的 subplot(n,m,x) 中那样在 gnuplot 的 multiplot 模式中选择一个子图,其中 x 是我想要绘制的那个?我首先在红色图形上使用线点绘制三个点,然后我想用黑色绘制一个点,而不是通过线连接到任何其他点。

gnuplot subplot

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

使用 matplotlib subplot 排列饼图

我有 7 个 pi 图表(下面列出了 4 个)。我正在尝试创建一个仪表板,第一行有 4 个饼图,第二行有 3 个饼图。不知道下面的代码哪里出了问题。有没有其他选择来实现这一目标?任何帮助,将不胜感激。

from matplotlib import pyplot as PLT
fig = PLT.figure()
ax1 = fig.add_subplot(221)
line1 = plt.pie(df_14,colors=("g","r"))
plt.title('EventLogs')
ax1 = fig.add_subplot(223)
line2 = plt.pie(df_24,colors=("g","r"))
plt.title('InstalledApp')
ax1 = fig.add_subplot(222)
line3 = plt.pie(df_34,colors=("g","r"))
plt.title('Drive')
ax1 = fig.add_subplot(224)
line4 = plt.pie(df_44,colors=("g","r"))
plt.title('SQL Job')
ax1 = fig.add_subplot(321)
line5 = plt.pie(df_54,colors=("g","r"))
plt.title('Administrators')
ax2 = fig.add_subplot(212)
PLT.show()
Run Code Online (Sandbox Code Playgroud)

python matplotlib subplot

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

Seaborn 子图上的 GridSpec

我目前有 2 个使用 seaborn 的子图:

import matplotlib.pyplot as plt
import seaborn.apionly as sns

f, (ax1, ax2) = plt.subplots(2, sharex=True)

sns.distplot(df['Difference'].values, ax=ax1) #array, top subplot

sns.boxplot(df['Difference'].values, ax=ax2, width=.4) #bottom subplot
sns.stripplot([cimin, cimax], color='r', marker='d') #overlay confidence intervals over boxplot

ax1.set_ylabel('Relative Frequency') #label only the top subplot

plt.xlabel('Difference')

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

这是输出:

分布图

我对如何使 ax2(下图)相对于 ax1(上图)变得更短感到困惑。我正在查看 GridSpec ( http://matplotlib.org/users/gridspec.html ) 文档,但我不知道如何将它应用于 seaborn 对象。

题:

  1. 与顶部子图相比,如何使底部子图更短?
  2. 顺便说一句,我如何将情节的标题“Distrubition of Difference”移到顶部子情节之上?

感谢您的时间。

python matplotlib subplot seaborn

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

plt (matplotlib) 未在新窗口中显示

我正在尝试使用and对两个图像myImageReflectanceImage进行子绘制,问题是该图形显示在控制台中而不是在新窗口中,我需要将该图形放在一个新的单独窗口中才能保存并在外部使用代码。matplotlibplt

我相信问题实际上与我使用的Linux (Ubuntu)版本有关?或者我遗漏了一些代码?

    import matplotlib.pyplot as plt
    import numpy as np
    import cv2
    
    img_directory = "/XXX/XXX/IMG_XXX.TIF"

    myImage=cv2.imread(img_directory)

    plt.figure()
    plt.subplot(221), plt.imshow(myImage),plt.title('Original Image')
    plt.subplot(222), 
    plt.imshow(np.array(reflectanceImage).reshape(1280,960).T),plt.title('Reflectance')p
Run Code Online (Sandbox Code Playgroud)

感谢您的帮助。

python matplotlib figure subplot canopy

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

python中的不均匀子图

用以下捕获在python中创建(3,3)子图矩阵的最佳方法是什么:

  • 第一列包含3个子图
  • 第二列包含3个子图
  • 第三列包含2个子图

最后两个子图的大小应相等。这意味着它们将在其他两列的中间图的中间相遇。

我尝试使用gridspec进行此操作,但到目前为止还没有解决。

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import gridspec

# generate some data
x = np.arange(0, 10, 0.2)
y = np.sin(x)

# plot it
fig = plt.figure(figsize=(8, 6))

gs = gridspec.GridSpec(3, 3)

ax0 = plt.subplot(gs[0])
ax0.plot(x, y)
ax1 = plt.subplot(gs[1])
ax1.plot(y, x)

ax3 = plt.subplot(gs[3])
ax3.plot(y, x)
ax4 = plt.subplot(gs[4])
ax4.plot(y, x)

ax6 = plt.subplot(gs[6])
ax6.plot(y, x)
ax7 = plt.subplot(gs[7])
ax7.plot(y, x)

plt.tight_layout()
plt.savefig('grid_figure.png')

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

在此处输入图片说明

python matplotlib subplot

2
推荐指数
3
解决办法
2408
查看次数

Python:matplotlib/pandas - 将数据框绘制为子图中的表格

我在这里有一个(非常简化的)代码段,用于我正在处理的一个开源项目,用于从 STDF 数据绘制 ATE 结果......

def plot_everything_from_one_test(test_data, data, num_of_sites, test_tuple):

    plt.figure()


    # Title for everything
    plt.suptitle("Test Information Goes Here")

    # Find the limits
    low_lim = get_plot_min(data, test_tuple, num_of_sites)
    hi_lim = get_plot_max(data, test_tuple, num_of_sites)

    ######        

    table = function_that_returns_a_dataframe()

    plt.subplot(121)

    # HOW WOULD I ACTUALLY PUT A DATAFRAME HERE

    ######

    # Plots the trendline
    plt.subplot(222)
    plot_full_test_trend(test_data, low_lim, hi_lim)
    plt.title("Trendline")

    # Plots the histogram
    plt.subplot(224)
    plot_full_test_hist(test_data, low_lim, hi_lim)
    plt.title("Histogram")

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

基本上,我真正想要做的就是在子图部分 (121) 中简单地呈现一个包含数组或数据帧或其他内容的表格。这个数据框恰好有 10 列宽和无限长(大约 10 秒的数量级,但可以根据需要进行修剪)。我环顾四周,我知道 matplotlib 有 table(),但是从我所看到的,它创建了一个新图形(不需要的),并且它也试图强制图形在它上面呈现,即使我真的没有想要渲染,因为它真的没用。我看到这可以被规避,但我不知道如何在保留我的次要情节的同时管理它。也许我只是不明白 matplotlib 如何与它们一起工作。

另一个问题是,当我可以某种程度地获取要呈现的表格时,它们的速度非常慢,达到一分钟以上才能呈现 …

python matplotlib dataframe pandas subplot

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

用函数生成的图形填充 matplotlib 子图

我找到并改编了以下代码片段,用于生成线性回归的诊断图。这是目前使用以下功能完成的:

def residual_plot(some_values):
    plot_lm_1 = plt.figure(1)    
    plot_lm_1 = sns.residplot()
    plot_lm_1.axes[0].set_title('title')
    plot_lm_1.axes[0].set_xlabel('label')
    plot_lm_1.axes[0].set_ylabel('label')
    plt.show()


def qq_plot(residuals):
    QQ = ProbPlot(residuals)
    plot_lm_2 = QQ.qqplot()    
    plot_lm_2.axes[0].set_title('title')
    plot_lm_2.axes[0].set_xlabel('label')
    plot_lm_2.axes[0].set_ylabel('label')
    plt.show()
Run Code Online (Sandbox Code Playgroud)

用类似的东西调用:

plot1 = residual_plot(value_set1)
plot2 = qq_plot(value_set1)
plot3 = residual_plot(value_set2)
plot4 = qq_plot(value_set2)
Run Code Online (Sandbox Code Playgroud)

如何创建subplots以便将这 4 个图显示在 2x2 网格中?
我试过使用:

fig, axes = plt.subplots(2,2)
    axes[0,0].plot1
    axes[0,1].plot2
    axes[1,0].plot3
    axes[1,1].plot4
    plt.show()
Run Code Online (Sandbox Code Playgroud)

但收到错误:

AttributeError: 'AxesSubplot' object has no attribute 'plot1'
Run Code Online (Sandbox Code Playgroud)

我应该从函数内部还是其他地方设置轴属性?

python matplotlib subplot multiple-axes

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

Matplotlib 为图形添加副标题

我想为包含多个子图的图形添加一个标题。

这是我的代码:

    import matplotlib.pyplot as plt 

    plt.figure(figsize = (15, 80))
    for i, audio, rate, name in zip(range(len(audios)), audios, rates, names):
        plt.subplot(len(audios), 1, i+1)
        plt.plot(rate, audio)
        plt.xlabel('Time (s)')
        plt.ylabel('Amplitude')
        plt.title(name)
    plt.subtitle('Figure 1: Plot amplitude of signal')
    plt.show()
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:module 'matplotlib.pyplot' has no attribute 'subtitle' 我不知道为什么这不起作用,因为它在 matplotlib 文档中是这样写的!感谢您的帮助。

python plot matplotlib title subplot

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

.add_subplot(nrows, ncols, index) 如何工作?

我正在 matplotlib 的add_subplot()函数中创建一个图形。

当我运行这个

ax1 = fig.add_subplot(231)
ax2 = fig.add_subplot(232)
ax3 = fig.add_subplot(233)
ax4 = fig.add_subplot(212) # why not 211
Run Code Online (Sandbox Code Playgroud)

我得到这个输出

在此处输入图片说明

我的问题是这最后一个论点是如何运作的。为什么 ax4 是 212 而不是 211,因为第二行只有一个图?

如果我使用 211 而不是 212 运行,如下所示:

ax1 = fig.add_subplot(231)
ax2 = fig.add_subplot(232)
ax3 = fig.add_subplot(233)
ax4 = fig.add_subplot(211)
Run Code Online (Sandbox Code Playgroud)

我得到这个输出,其中 Plot 4 放在第一行的 Plot 2 上。

在此处输入图片说明

如果有人能解释索引是如何工作的,我将不胜感激。花了不少时间研究还是没搞懂。

python matplotlib subplot

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

Plotly:如何使用分组图例设置多个子图?

对于每个子图,我有 3 条单独的线:2017 年、2018 年和 2019 年有 3 次“go.Scatter”,每个子图都代表一个国家(25 个国家),并且始终是这 3 年。我可以使用 subplot 示例代码,但是所有 75 个图例(25 X 3)都将使用不同的颜色放在一起,而且很乱。

我不需要在不同的子图上使用不同的颜色,我可以在所有子图的 3 年中只使用 3 种不同的颜色和 3 个图例,如果我点击例如 2017 年所有 2017 年的曲线/线消失在 25子图。

任何人都可以分享示例代码吗?出于说明目的,它可以是 2 而不是 25。我在 Plotly 网站上找不到这个示例代码。

编辑:这是一个示例代码:

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

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

fig.add_trace(go.Scatter(
    x=[3, 4, 5],
    y=[1000, 1100, 1200],name="2017",
), row=1, col=1)

fig.add_trace(go.Scatter(
    x=[2, 3, 4],
    y=[1200, 1100, 1000],name="2018",
), row=1, col=1)


fig.append_trace(go.Scatter(
    x=[2, 3, 4],
    y=[100, 110, 120],name="2017", …
Run Code Online (Sandbox Code Playgroud)

python legend subplot plotly

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