【问题标题】:Gnuplot - plot image at pointGnuplot - 在点处绘制图像
【发布时间】:2023-03-28 17:57:02
【问题描述】:

我知道之前有人问过这个问题using images for points,但我想知道是否有人可以提供更详细的帮助,或者 gnuplot 最近的任何变化是否使这更容易?

我的问题略有不同,我不想重新提出 6 岁问题

我正在尝试为类似这样的天气预报制作图: AIX weather widget screenshot

我有一些来自 openweathermap 的 api 的数据,还有一个图标集 - 绘制温度、降雨量等是微不足道的。我想做的是绘制一个图像/图标来显示温度图上方的天气

看起来center 可以工作,但我怎样才能让center 对应于数据点 - 或者更准确地说是数据点上方的几个像素

任何替代建议也将不胜感激

【问题讨论】:

  • 能否请您发布到目前为止您尝试过的内容?
  • 我还没有真正在这方面取得任何进展,因为我不确定该采取哪个方向。如上所述,我认为center 如果我能正确放置它就可以工作。我希望有一个使用图像作为列/框的功能另一个选择可能是使用 rgbimage 并尝试根据数据点坐标手动放置图像。这基本上就是我寻求帮助的原因因为我不确定哪个选项是最好的继续

标签: gnuplot


【解决方案1】:

以下是分两步完成的方法:

IMG_LIST="cloud.png sun.png"
X=""
Y=""
IMG=""
storedata(x,y,index_img)=                               \
        (X=X.sprintf(" %f",x),                          \
        Y=Y.sprintf(" %f",y),                           \
        IMG=IMG." ".word(IMG_LIST,int(index_img)),y)

plot '-' using 1:(storedata($1,$2,$3))
0.5 23 2
1.5 27 2
2.5 19 1
e

plot [0:3][0:40] for [i=1:words(IMG)] word(IMG,i) binary filetype=png center=(word(X,i),word(Y,i)) dx=0.005 dy=0.05 with rgbimage notitle

第一步是使用绘图数据构建列表(字符串 X、Y 和 IMG 中的空格分隔元素)。然后 for 循环在所需位置绘制图像。 dx 和 dy 需要根据您的图像大小和绘图范围进行调整(可以使用 GPVAL_* 数据自动调整)。

【讨论】:

  • 非常感谢您的帮助 - 这正是我想要实现的目标。我了解(大部分)这是在做什么..但是..按原样使用您的脚本只会为我生成一个带有“加号”的情节..我已将“太阳”和“云”图标移动到同一目录.它们是 128x128 像素。我已经设置了“终端 png”并指定了 png 的路径。而且我有几个问题(恐怕可能非常基本 - 提前 apols)。如何将“storedata”指向我的数据文件(称为 results.csv)?如何将图像列表指向特定目录?谢谢!
  • 刚刚意识到它是 gnuplot 交互式的——我不熟悉。我正在尝试编写此脚本(在 Ubuntu 上),但无法将其作为脚本运行。另外,我如何将“storedata”指向我的数据文件,它看起来像这样:` - main/temp weather/0/icon dt_txt - 8.65 03d 2016-04-29 09:00:00 - 9.31 04d 2016-04- 29 12:00:00 - 9.27 04d 2016-04-29 15:00:00`
  • 这可以用作脚本,只需将其保存在文件中并在其上运行gnuplot -persist,或者在最后一个plot 命令之前添加终端和输出选项以保存到文件。要更改数据源,请替换第一个绘图命令中的'-',并修改using 以考虑您的特定格式。如果您对此有困难,可以再问一个问题。
  • 您可以将IMG_LIST 变量中的文件名替换为包含完整路径(或相对路径)的名称。如果路径名中有空格,您可能需要转义它们(在空格字符之前写 ``)
  • 再次感谢您的帮助@Joce - 我非常感谢!我快到了——它正在绘制“中心”,但不是图像。我的数据文件包含与图标名称对应的值:数据文件包含例如第 13 列中的 03d, 04d, 04d, 10d, 04n, 03n,并且我有对应的图像文件 - 03d.png、04d.png、04d.png、10d.png 等..所以我想我可以只执行“查找”而不是索引..但是需要一些帮助!提前致谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多