linux - 如何使用 Gnuplot 5.2 制作多轴图?
问题描述
我有这个数据:
2019-11-11;/dev/hd1/;10
2019-11-11;/dev/hd2/;12
2019-11-11;/dev/hd3/;14
2019-11-11;/dev/hd4/;16
2019-11-11;/dev/hd5/;18
2019-11-11;/dev/hd6/;20
2019-11-12;/dev/hd1/;13
2019-11-12;/dev/hd2/;15
2019-11-12;/dev/hd3/;17
2019-11-12;/dev/hd4/;19
2019-11-12;/dev/hd5/;21
2019-11-12;/dev/hd6/;23
2019-11-13;/dev/hd1/;16
2019-11-13;/dev/hd2/;19
2019-11-13;/dev/hd3/;21
2019-11-13;/dev/hd4/;24
2019-11-13;/dev/hd5/;23
2019-11-13;/dev/hd6/;26
我可以用 excel 制作多轴图:
但是当我尝试使用 Gnuplot 5.2 时,我没有成功......
你能告诉我怎么做吗?
解决方案
这里的人们希望您展示一些代码并努力解决您的问题,但是,我假设您是 gnuplot 初学者,我不得不承认,使用 gnuplot 从提供的数据中获得所需的绘图并不简单(除非有更简单的方法我没有想到。)我会循环数据并使用三元运算符通过函数对其进行过滤。当然还有改进的余地。检查help ternary
以及help timecolumn
其他关键字以获取更多详细信息。
代码:
reset session
$Data <<EOD
2019-11-11;/dev/hd1/;10
2019-11-11;/dev/hd2/;12
2019-11-11;/dev/hd3/;14
2019-11-11;/dev/hd4/;16
2019-11-11;/dev/hd5/;18
2019-11-11;/dev/hd6/;20
2019-11-12;/dev/hd1/;13
2019-11-12;/dev/hd2/;15
2019-11-12;/dev/hd3/;17
2019-11-12;/dev/hd4/;19
2019-11-12;/dev/hd5/;21
2019-11-12;/dev/hd6/;23
2019-11-13;/dev/hd1/;16
2019-11-13;/dev/hd2/;19
2019-11-13;/dev/hd3/;21
2019-11-13;/dev/hd4/;24
2019-11-13;/dev/hd5/;23
2019-11-13;/dev/hd6/;26
EOD
set colorsequence classic
set datafile separator ";"
set datafile missing NaN
myTimeFmt = "%Y-%m-%d %H:%M"
set timefmt myTimeFmt
set xdata time
set xtics 3600*24 # one tic per day
set format x "%d.%m.%Y"
set xrange["2019-11-10 20:00":"2019-11-13 04:00"]
set yrange[8:28]
set ytics 5
set grid ytics
set key top left
myFilter(c,n) = strcol(c)[8:8] == n ? $3 : NaN
plot \
for [i=1:6] $Data u (timecolumn(1)):(myFilter(2,i)) w lp pt 7 title sprintf("/dev/hd%d/",i), \
for [i=1:6] $Data u (timecolumn(1)):(myFilter(2,i)):3 w labels offset 0,0.7 notitle
### end of code
结果:
推荐阅读
- c# - 为什么我无法使用驱动程序连接字符串连接到 MySql .Net,因为它与 Delphi 的 TADOQuery 一起使用?
- python - python3:timedrotatingfilehandler 日志轮换问题与具有多个脚本的相同日志文件
- javascript - Vue 多个组件和访问 Vuex 属性
- qt - 在 QWidget 内部,如果我试图同时调整小部件的大小,则 Qwt 绘图应该调整大小。如何将 resizeevent 应用于 QWidget
- powershell - 如何比较数据集与 adcomputer 记录?
- node.js - 如何从我的应用程序而不是 CLI 运行 Vault?
- c# - C# LanguageExt - 将多个异步调用组合成一个分组调用
- python - 获取具有行条件的最大值列
- php - 如何在 PHP 中动态生成 PWA 清单,从 URL 和公开可用的 JSON 文件中提取数据?
- python - 如果数据内部有逗号,则读取数据列表时的问题将视为下一项