生成具有多个(多个多组的一组)X轴数据集的图形
-
12-09-2019 - |
题
我正在寻找一种在X轴上生成具有多组数据的图形的方法,每个图都分为多个集合。我基本上想接受 此图 并与之并排放置相似的图。我试图在多个服务器上(每组具有相同的8个作业)上绘制同一作业(0-3)的持续时间(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代码,可以生成您想要的内容。 (该示例使用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)
只是为了使不同配置的颜色变暗,但使它们保持足够明亮,以便可以区分颜色。
输出看起来像:
不隶属于 StackOverflow