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

问题描述 投票:3回答:3

我正在寻找一种方法来生成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   ||
|| Server 1              || Server 2              || Server 3              ||

这可能与GD :: Graph Perl模块或matplotlib Python模块一起使用吗?我找不到关于这个主题的例子或文档。

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

输出如下:

alt text


0
投票

最近,我看到了一个图表,我认为使用protovis做你想要的

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


0
投票

MathGL可以轻松完成,它也有Python界面。有关示例,请参阅this

© www.soinside.com 2019 - 2024. All rights reserved.