"""wiggle - Plot z=f(x,y) anomalies along tracks."""frompygmt.clibimportSessionfrompygmt.helpersimportbuild_arg_string,fmt_docstring,kwargs_to_strings,use_alias@fmt_docstring@use_alias(B="frame",D="position",G="color",J="projection",R="region",T="track",U="timestamp",V="verbose",W="pen",X="xshift",Y="yshift",Z="scale",c="panel",i="columns",p="perspective",)@kwargs_to_strings(R="sequence",c="sequence_comma",i="sequence_comma",p="sequence")defwiggle(self,x=None,y=None,z=None,data=None,**kwargs):r""" Plot z=f(x,y) anomalies along tracks. Takes a matrix, (x,y,z) triplets, or a file name as input and plots z as a function of distance along track. Must provide either ``data`` or ``x``/``y``/``z``. Full parameter list at :gmt-docs:`wiggle.html` {aliases} Parameters ---------- x/y/z : 1d arrays The arrays of x and y coordinates and z data points. data : str or {table-like} Pass in either a file name to an ASCII data table, a 2D {table-classes}. Use parameter ``columns`` to choose which columns are x, y, z, respectively. {J} {R} scale : str or float Gives anomaly scale in data-units/distance-unit. Append **c**, **i**, or **p** to indicate the distance unit (cm, inch, or point); if no unit is given we use the default unit that is controlled by :gmt-term:`PROJ_LENGTH_UNIT`. {B} position : str [**g**\|\ **j**\|\ **J**\|\ **n**\|\ **x**]\ *refpoint*\ **+w**\ *length*\ [**+j**\ *justify*]\ [**+al**\|\ **r**]\ [**+o**\ *dx*\ [/*dy*]][**+l**\ [*label*]]. Defines the reference point on the map for the vertical scale bar. color : str Set fill shade, color or pattern for positive and/or negative wiggles [Default is no fill]. Optionally, append **+p** to fill positive areas (this is the default behavior). Append **+n** to fill negative areas. Append **+n+p** to fill both positive and negative areas with the same fill. Note: You will need to repeat the color parameter to select different fills for the positive and negative wiggles. track : str Draw track [Default is no track]. Append pen attributes to use [Default is **0.25p,black,solid**]. {U} {V} pen : str Specify outline pen attributes [Default is no outline]. {XY} {c} columns : str or 1d array Choose which columns are x, y, and z, respectively if input is provided via *data*. E.g. ``columns = [0, 1, 2]`` or ``columns = "0,1,2"`` if the *x* values are stored in the first column, *y* values in the second one and *z* values in the third one. Note: zero-based indexing is used. {p} """kwargs=self._preprocess(**kwargs)# pylint: disable=protected-accesswithSession()aslib:# Choose how data will be passed in to the modulefile_context=lib.virtualfile_from_data(check_kind="vector",data=data,x=x,y=y,z=z)withfile_contextasfname:arg_str=" ".join([fname,build_arg_string(kwargs)])lib.call_module("wiggle",arg_str)