Génération d'un graphique avec plusieurs ensembles de données sur plusieurs ensembles (ensembles de plusieurs ensembles de multiples)

StackOverflow https://stackoverflow.com/questions/1242270

Question

Je cherche un moyen de générer un graphique avec plusieurs ensembles de données sur l'axe X, chacun étant divisé en plusieurs ensembles de plusieurs ensembles. Je veux essentiellement prendre ce graphique et placer des graphiques similaires côte à côte avec. J'essaie de représenter graphiquement la construction d'un graphique de la durée (axe y) des mêmes travaux (0-3) avec différentes configurations (0-1) sur plusieurs serveurs (chaque groupe avec les mêmes 8 travaux). Espérons que le diagramme suivant illustrera ce que j'essaie d'accomplir (les groupes plus petits sont séparés par des tuyaux, des groupes plus grands par doubles tuyaux):

|| 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              ||

Est-ce possible avec le module GD :: Graph Perl ou le module Matplotlib Python? Je ne trouve pas d'exemples ou de documentation sur ce sujet non plus.

Était-ce utile?

La solution

Voici un code Python qui produira ce que vous recherchez. (L'exemple utilise 3 configurations plutôt que 2 pour s'assurer que le code était assez général.)

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()

Ce code est probablement assez transparent. Le terme étrange (iconfig+2.)/(nconfigs+1) est juste pour diminuer les couleurs pour les différentes configurations, mais les garder suffisamment lumineuses pour que les couleurs puissent être distinguées.

La sortie ressemble:

alt text

Autres conseils

Récemment, j'ai vu un graphique qui, je pense, fait ce que vous voulez utiliserprotovis

Je n'ai aucune expérience avec le programme, mais le graphique était éclaircissant et je pense que vous voudriez que vous vouliez.

Mathgl Peut le faire facilement et il a également une interface Python. Voir cette pour des exemples.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top