use gnuplot as lightweight plotter
This commit is contained in:
parent
233cdd9f80
commit
6e9dd4d45f
@ -11,6 +11,7 @@ import numpy as np
|
||||
from nmreval.data.points import Points
|
||||
from nmreval.io.asciireader import AsciiReader
|
||||
from nmreval.io.hdfreader import HdfReader
|
||||
from nmreval.lib.logger import logger
|
||||
from nmreval.utils.utils import get_temperature, roundrobin
|
||||
|
||||
|
||||
@ -56,7 +57,7 @@ class FCReader:
|
||||
_temp = self._read_from_dir(filename)
|
||||
|
||||
else:
|
||||
raise TypeError
|
||||
raise TypeError(f'{filename} is of unknown type')
|
||||
|
||||
if not _temp:
|
||||
raise OSError(-666, f'No magnetization found for {filename.name}.', filename.name)
|
||||
@ -224,33 +225,30 @@ class FCReader:
|
||||
img_file = image_path.joinpath(save_name).with_suffix(".png")
|
||||
|
||||
gnuplot_args = [
|
||||
'gnuplot',
|
||||
'-e',
|
||||
'set terminal png',
|
||||
f'set output "{img_file}"',
|
||||
f'set title "f = {k:.4g} Hz\n{p0[2]:.4g}(+/-{perr[2]:.4g}) beta: {p0[3]:.4g}(+/-{perr[3]:.4g})"',
|
||||
'set xlabel "t / s"',
|
||||
'set logscale x',
|
||||
'set format x "10^{{%L}}"',
|
||||
'set ylabel "M"',
|
||||
'set key off',
|
||||
f'plot "{data_path.joinpath(save_name)}" with points pointtype 5, "{fit_path.joinpath(save_name)}" with lines',
|
||||
'set terminal png;',
|
||||
f'set output "{img_file}";',
|
||||
f'set title "f = {k:.4g} Hz\\n{p0[2]:.4g}(+/-{perr[2]:.4g}) beta: {p0[3]:.4g}(+/-{perr[3]:.4g})";',
|
||||
'set xlabel "t / s";',
|
||||
'set logscale x;',
|
||||
'set format x "10^{{%L}}";',
|
||||
'set ylabel "M";',
|
||||
'set key off;',
|
||||
f'plot "{data_path.joinpath(save_name)}" with points pointtype 5, "{fit_path.joinpath(save_name)}" with lines;',
|
||||
]
|
||||
|
||||
print(gnuplot_args)
|
||||
|
||||
subprocess.Popen(gnuplot_args)
|
||||
|
||||
# if save_fig:
|
||||
# fig, ax = plt.subplots()
|
||||
# ax.set_xlabel('t / s')
|
||||
# ax.set_ylabel('M')
|
||||
# axheader = f'T1: {p0[2]:.4g}(+/-{perr[2]:.4g}) beta: {p0[3]:.4g}(+/-{perr[3]:.4g})'
|
||||
# ax.set_title(f'f = {k:.4g} Hz\n{axheader}')
|
||||
# ax.semilogx(v.x, v.y, 'o')
|
||||
# ax.semilogx(xplot, yplot, '-')
|
||||
# fig.savefig(image_path.joinpath(save_name).with_suffix('.png'))
|
||||
# plt.close(fig)
|
||||
try:
|
||||
proc = subprocess.Popen(
|
||||
['gnuplot', '-p'],
|
||||
shell=True,
|
||||
stdin=subprocess.PIPE,
|
||||
encoding='utf8',
|
||||
)
|
||||
for args in gnuplot_args:
|
||||
proc.stdin.write(args)
|
||||
proc.stdin.write('quit\n')
|
||||
proc.stdin.flush()
|
||||
except Exception as e:
|
||||
logger.error(f'saving image {save_name} failed', e)
|
||||
|
||||
freqs = np.asanyarray(freqs)
|
||||
params = np.asanyarray(params)
|
||||
|
Loading…
Reference in New Issue
Block a user