Generieren eines Diagramms mit mehreren (Sätzen mehrerer Sätze mehrerer) X-Achsen-Datensätze
-
12-09-2019 - |
Frage
Ich suche nach einer Möglichkeit, ein Diagramm mit mehreren Datensätzen auf der X-Achse zu generieren, von denen jedes in mehrere Sätze mehrerer Sätze unterteilt ist. Ich möchte im Grunde nehmen Diese Grafik und platzieren Sie ähnliche Grafiken nebeneinander. Ich versuche, das Erstellen eines Diagramms der Dauer (y-Achse) derselben Jobs (0-3) mit unterschiedlichen Konfigurationen (0-1) auf mehreren Servern (jede Gruppe mit denselben 8 Jobs) zu gratschen. Hoffentlich wird das folgende Diagramm veranschaulichen, was ich zu erreichen versuche (kleinere Gruppierungen werden durch Rohre, größere Gruppierungen durch Doppelrohre getrennt):
|| 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 ||
Ist dies mit dem GD :: Graph Perl -Modul oder dem Matplotlib -Python -Modul möglich? Ich kann keine Beispiele oder Dokumentation zu diesem Thema finden.
Lösung
Hier ist ein Python -Code, der das produziert, wonach Sie suchen. (Das Beispiel verwendet 3 Konfigurationen anstelle von 2, um sicherzustellen, dass der Code ziemlich allgemein war.)
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()
Dieser Code ist wahrscheinlich ziemlich transparent. Der ungerade Begriff (iconfig+2.)/(nconfigs+1)
ist nur die Farben für die verschiedenen Konfigurationen zu dimmen, aber sie hell genug zu halten, damit die Farben unterschieden werden können.
Die Ausgabe sieht aus:
Andere Tipps
Vor kurzem habe ich ein Diagramm gesehen, das meiner Meinung nach das tut, was Sie verwenden möchtenProtovis
Ich habe keine Erfahrung mit dem Programm, aber die Grafik war aufschlussreich und ich denke, würde Ihnen wollen, dass Sie es wollen.