linux - 带有 CSV 的 gnuplot 中的堆叠条形图

标签 linux csv gnuplot data-visualization

我是 gnuplot 的新手。我一直在尝试将 CSV 的内容绘制成各种格式,例如线条、框等。但是,由于我拥有的数据量和性质,CSV 中的各个字段/列在同一实例中具有有限数据时间,由于显而易见的原因,我看到他们在情节中重叠。我想问一下是否有任何方法可以突出显示所有图,也就是说,如果多列数据似乎共享相同的时间戳,有没有办法让我在前面看到最小值,在后面看到较大的值。一种可能的方法是堆叠条形图。

这是我输入的 CSV 的片段:

TimeStamp,Score_1,Score_2,Score_3,Score_4
13:48:24, 8800, 8796, 4, 10
13:48:29, 1500, 8896, 4, 900
13:48:33, 8900, 8896, 4, 0
13:48:41, 8900, 8896, 4, 0
13:48:43, 6900, 8896, 4, 5000
13:48:55, 8900, 8896, 4, 0
13:49:21, 8900, 8500, 4, 0
13:49:29, 2900, 8000, 1000, 2000
13:50:29, 1900, 8896, 4000, 0
13:55:29, 9000, 8896, 1400, 0
13:52:29, 900, 8896, 4, 0

到目前为止我尝试了什么:

INPUT_FILE=ARG1
set datafile separator ','
set key autotitle columnhead
set boxwidth 0.5 relative
set style fill solid 1.0 border -1

plot INPUT_FILE using 1:2 with boxes, \
"" using 1:3 with boxes, \
"" using 1:4 with boxes, \

#plot INPUT_FILE using 1:2 with lines, \
#"" using 1:3 with lines, \
#"" using 1:4 with lines, \

最佳答案

“带点”绘图将使您能够看到给定 Y 轴的所有合理不同的 X 值。合理与图表的缩放有关,因此请设置您的 yrange 和 zrange 以显示所需的最小 View 。

plot "blah" using 1:2 with dots
set xrange [0-10000]
set yrange [0-10000]

另一种解决方案可能是预处理您的数据,即对您的分数行进行排序,以便 z 顺序始终在前面显示最低值。这对我来说听起来最简单。

gnuplot 支持 3D 绘图,因此使用 splot 结合旋转 View 和向数据集添加 z 维度也可以实现。这涉及更多的工作,并且仍然预处理您的数据以及一些围绕将哪些行分配给哪个 z 顺序的逻辑。

xrot=85
zrot=0
xview(xrot)=xrot
zview(zrot)=zrot
set view xview(xrot), zview(zrot), 1.3, 1
set size square

set output "blah.gif"
splot "blah.dat" using 1:2:6 with dots

关于linux - 带有 CSV 的 gnuplot 中的堆叠条形图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49314758/

相关文章:

c - 进程之间,通过msg共享一个socket。使用套接字 getpeername 结果是 0.0.0.0 没有任何错误

结合参数 getopt 的选项

c# - CSV 文件中的附加信息 : External table is not in the expected format.

Gnuplot:当日期序列中缺少数据时如何默认为 '0'

binary - 带有二进制数据的 gnuplot 中的 pm3d

php - 需要一种有选择地杀死休眠的 php 进程的方法

windows - 可以连接电脑控制鼠标或键盘吗?

Node.js 迭代请求的 CSV 文件,但在继续迭代之前等待响应

python - 训练神经网络的问题

ubuntu - 如何在直方图上绘制水平和垂直箭头