从您的问题和您的评论到我之前的两个答案,您的数据可视化技术必须
对于第一项,我只使用了一个按时间缩放的轴(x 轴)。对于第二个,我使用y 轴来表示项目内时间 - 其中,项目之间的时间在 x 轴上。这样做可以使地块大小保持可控。对于第三项,我更喜欢用不同的方式表示这种情况——即,有明确的开始和明确的结束。换句话说,当我的老板问我某个项目的进展情况时,我想我自然会说“完成了 50%”或类似的话,而不是“我们已经完成了 4 周”。我认为温度计符号在这里可以直观直观-即,您通过填充容器来显示进度。
所以在下图中,我展示了五个独立的项目(版本 1 到 5);x 轴以周为单位,显示每个项目开始日期的时间间隔。y 轴(我没有显示,而是依靠温度计符号中的颜色填充来显示“每个项目的完成程度。
我在R中创建了这个图(仅使用基本安装中的库)。
这是代码:
# synthetic data:
x = c(1, 10, 22, 40, 58) # x-axis
y = c(2, 5.5, 9, 12.4, 15.0) # y-axis
z = c(1, 0.9, 0.80, 0.67, 0.25) # % fill for thermometer symbols
# create the plot:
plot(x, y, ann=F, axes=F, type="n")
symbols(x, y, thermometers=cbind(0.5, 4, z), inches=1.2, fg=rep(3, 5),
ann=F, axes=F)
axis(side=1, at=xt, lwd.ticks=1.3, col="steelblue4", col.ticks="red")
如果您不熟悉 R,请发表一些评论。首先,可以省略plot和axis函数调用。其他三个纯粹是为了美观:
调用plot来创建一个没有数据、没有标签和没有可见轴的图,以便我可以稍后绘制我的自定义轴并完全保留 y 轴;
轴仅用于绘制自定义 x 轴,在我想要的位置加上刻度线。
符号是唯一需要的调用。
'thermometer' 参数是一个矩阵,其中前两列分别是符号宽度和高度,第三列是填充百分比('z');'inches' 是实际符号大小,'fg' 是每个符号的填充颜色,即,'rep(3,5) 仅表示 '3' 重复 5 次,其中 '3' 只是方便符号你在下面看到的可爱的绿色。
