3

我正在寻找一种在 X 轴上生成具有多组数据的图形的方法,每个数据都分为多组多组。我基本上想拿这张图并将类似的图并排放置。我正在尝试在多台服务器(每组具有相同的 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 模块一起使用吗?我也找不到关于这个主题的示例或文档。

4

3 回答 3

6

这是一些 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)只是为不同的配置调暗颜色,但保持它们足够亮以便可以区分颜色。

输出如下所示:

替代文字

于 2009-08-07T03:26:27.017 回答
0

最近,我看到一个图表,我认为使用 protovis 可以满足您的要求

我没有使用该程序的经验,但该图表很有启发性,我认为它会给你想要的。

于 2009-08-07T16:42:16.427 回答
0

MathGL可以很容易地做到这一点,它也有 Python 接口。有关示例,请参见此

于 2011-01-25T20:01:42.413 回答