Closed seisman closed 4 years ago
I can reproduce the same crash, with GMT 6.0 on Linux and using the pygmt master branch. The corresponding code in GMT works though:
gmt begin test png
gmt basemap -JX15c/10c -R400/600/5/8 -B
gmt plot -W1p,black+ve0.2c << EOF
530.0 6.0
530.0 7.0
EOF
gmt plot -W1p,black+ve0.2c << EOF
570.0 6.0
570.0 7.0
EOF
gmt end show
produces:
Not much of a clue as to why it's crashing though :man_shrugging:
Also crushes on the second plot, but does not crush if integer values are used. That is
import pygmt
import numpy as np
fig = pygmt.Figure()
fig.basemap(projection="X15c/10c", region="400/600/5/8", frame=True)
fig.plot(x=[530, 530], y=[6.0, 7.0], pen='1p,black+ve0.2c')
fig.plot(x=[570, 570], y=[6.0, 7.0], pen='1p,black+ve0.2c')
fig.savefig("map.pdf")
works fine
fig.plot(x=[530, 530], y=[6.0, 7.0], pen='1p,black+ve0.2c')
fig.plot(x=[570.0, 570.0], y=[6.0, 7.0], pen='1p,black+ve0.2c')
also works fine
fig.plot(x=[530.0, 530.0], y=[6.0, 7.0], pen='1p,black+ve0.2c')
fig.plot(x=[570, 570], y=[6.0, 7.0], pen='1p,black+ve0.2c')
does not work
Seems like the issue is related to floating point numbers, also the data for later plots is converted to the data type of the first plot.
I might have found a solution: convert all floating point numbers to float32 (float64 is default) The following works with no error:
import pygmt
import numpy as np
fig = pygmt.Figure()
fig.basemap(projection="X15c/10c", region="400/600/5/8", frame=True)
fig.plot(x=[np.float32(530.0), np.float32(530.0)], y=[6.0, 7.0], pen='1p,black+ve0.2c')
fig.plot(x=[np.float32(570.0), np.float32(570.0)], y=[6.0, 7.0], pen='1p,black+ve0.2c')
fig.savefig("map.pdf")
Could it be that GMT does not have good support for float64 and uses float32 by default? Anyway, for plotting float64 values are probably not needed, so all float64 data should probably converted to float32 in the wrapper.
Description of the problem
I'm trying to plot two vectors using the following script. It works well if pen is set to
1p,black
(i.e. a simple line), but crashes if set to1p,black+ve0.2c
. Actually, the first plot works, but the second one crashes.Full code that generated the error
Full error message
System information
conda list
below:output of conda list