我正在寻找一种方法来生成在 X 轴上具有多组数据的图形,每组数据又分为多组多组。我基本上想采用 this graph 并将类似的图形与它并排放置。我正在尝试在多个服务器(每组具有相同的 8 个作业)上绘制具有不同配置 (0-1) 的相同作业 (0-3) 的持续时间(Y 轴)的图形。希望下图能说明我想要完成的任务(较小的分组由管道分隔,较大的分组由双管道分隔):

|| 0 1 | 0 1 | 0 1 | 0 1 || 0 1 | 0 1 | 0 1 | 0 1 || 0 1 | 0 1 | 0 1 | 0 1 ||
|| 0 | 1 | 2 | 3 || 0 | 1 | 2 | 3 || 0 | 1 | 2 | 3 ||
||服务器 1 ||服务器 2 ||服务器 3 ||

这可以通过 GD::Graph Perl 模块还是 matplotlib Python 模块实现?我也找不到关于此主题的示例或文档。

最佳答案

下面是一些 Python 代码,它们将生成您正在寻找的内容。 (该示例使用 3 个配置而不是 2 个配置以确保代码相当通用。)

import matplotlib.pyplot as plt
import random

nconfigs, njobs, nservers = 3, 4, 4

width = .9/(nconfigs*njobs)
job_colors = [(0,0,1), (0,1,0), (1,0,0), (1,0,1)]

def dim(color, fraction=.5):
    return tuple([fraction*channel for channel in color])

plt.figure()
x = 0
for iserver in range(nservers):
    for ijob in range(njobs):
        for iconfig in range(nconfigs):
            color = dim(job_colors[ijob], (iconfig+2.)/(nconfigs+1))
            plt.bar(x, 1.+random.random(), width, color=color)
            x += width
    x += .1

plt.show()

这段代码可能相当透明。奇怪的术语 (iconfig+2.)/(nconfigs+1) 只是使不同配置的颜色变暗,但要保持它们足够亮,以便可以区分颜色。

输出看起来像:

python - 生成具有多个(多组多组)X 轴数据集的图形-LMLPHP

关于python - 生成具有多个(多组多组)X 轴数据集的图形,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1242270/

10-12 21:00