Warning, /graphics/kst-plot/pyKst/html/index.rst is written in an unsupported language. File is not indexed.

0001 .. toctree::
0002    :maxdepth: 2
0003 
0004 PyKst documentation
0005 =================================
0006 PyKst is a python interface to kst. With PyKst, scripts can control and share data with a kst session.
0007 
0008 Installation
0009 ************
0010 You will want the version of pykst.py that goes with your version of kst2.
0011 Until packaging (and the API) are settled, this may mean compiling kst2 from source.
0012 
0013 pykst.py can use either PySide or PyQT4.  Make sure one is installed, and edit the begining of pykst.py
0014 accordingly (make sure the one you want to use is enabled, and the other is commented out.)
0015 
0016 Then run setup.py to install things properly.  In linux this is::
0017 
0018       sudo python2.7 setup.py install
0019 
0020 PyKst depends on python2.7 or greater, and modern versions of NumPy and SciPy.
0021 
0022 Examples
0023 ********
0024 PyKst can be used control kst, as one would with the GUI.  The following (minimal) example tells kst to
0025 plot sin(x) from -10 to 10. The results are identical to having used create->equation from within kst::
0026 
0027       import pykst as kst
0028 
0029       # start a kst session with the arbitrary name "TestSinX"
0030       client=kst.Client("TestSinX")
0031 
0032       # inside kst, create the x vector and the equation
0033       v1 = client.new_generated_vector(-10, 10, 1000)
0034       e1 = client.new_equation(v1, "sin(x)")
0035 
0036       # inside kst, create a curve, a plot, and add the curve to the plot
0037       c1 = client.new_curve(e1.x(), e1.y())
0038       p1 = client.new_plot()
0039       p1.add(c1)
0040 
0041 kst can be also be used to plot numpy arrays, as in this example::
0042 
0043       #!/usr/bin/python2.7
0044       import pykst as kst
0045       import numpy as np
0046 
0047       # create a pair of numpy arrays
0048       x = np.linspace( -10, 10, 1000)
0049       y = np.sin(x)
0050 
0051       # start a kst session with the arbitrary name "NumpyVector"
0052       client=kst.Client("NumpyVector")
0053 
0054       # copy the numpy arrays into kst
0055       V1 = client.new_editable_vector(x, name="X") # the name is for the label
0056       V2 = client.new_editable_vector(y, name="sin(X)") # the name is for the label
0057 
0058       # inside kst, create a curve, a plot, and add the curve to the plot
0059       c1 = client.new_curve(V1, V2)
0060       p1 = client.new_plot()
0061       p1.add(c1)
0062 
0063 Alternativly, one can use a (tiny) subset of matplotlib.pyplot called pykstplot.
0064 This interface is conceptually incompatible with the native interface, and is described
0065 at the end of this document.  As an example::
0066 
0067       #!/usr/bin/python2.7
0068       import pykstplot as plt
0069       #import matplotlib.pyplot as plt
0070       import numpy as np
0071 
0072       x = np.linspace( -10, 10, 100)
0073       y = np.sin(x)
0074       z = np.cos(x)
0075 
0076       plt.subplot(221)
0077       plt.plot(x,y*y, linewidth=2, color = "green", linestyle="-.", label="greenline")
0078       plt.subplot(122)
0079       plt.plot(x,y,"k.")
0080       plt.subplot(223)
0081       plt.plot(x,z,"m*", markersize=6, color="blue")
0082       plt.subplot(221, axisbg="lightblue")
0083       plt.plot(x,z)
0084       plt.xlabel("X axis")
0085       plt.ylabel("Y axis")
0086       plt.title("Title")
0087 
0088       plt.figure()
0089       plt.plot([1,3,7,15])
0090 
0091       plt.show()
0092 
0093       #plt.savefig("pltdemo.eps")
0094 
0095 "
0096 
0097 Clients
0098 *******************
0099 .. automodule:: pykst
0100    :members: Client
0101    :exclude-members: getArray, getList, send
0102 
0103 Primitives
0104 **********
0105 Scalars, Vectors, Matrices, and Strings (Primitives) can be used in 
0106 your scripts to share data with kst. All methods are pass-by-value: 
0107 for example, if you get a value of a scalar and change it, the data 
0108 inside kst is not changed. You need to explicitly call setValue(). 
0109 
0110 Scalars
0111 -------
0112 .. autoclass:: DataSourceScalar
0113    :members:
0114    :inherited-members:
0115 
0116 .. autoclass:: VectorScalar
0117    :members:
0118    :inherited-members:
0119 
0120 .. autoclass:: GeneratedScalar
0121    :members:
0122    :inherited-members:
0123 
0124 
0125 Vectors
0126 -------
0127 .. autoclass:: DataVector
0128    :members:
0129    :inherited-members:
0130 
0131 .. autoclass:: GeneratedVector
0132    :members:
0133    :inherited-members:
0134 
0135 .. autoclass:: EditableVector
0136    :members:
0137    :inherited-members:
0138 
0139 
0140 Matrices
0141 ---------
0142 .. autoclass:: DataMatrix
0143    :members:
0144    :inherited-members:
0145 
0146 
0147 Strings
0148 -------
0149 .. autoclass:: DataSourceString
0150    :members:
0151    :inherited-members:
0152    :exclude-members: setValue 
0153 
0154 .. autoclass:: GeneratedString
0155    :members:
0156    :inherited-members:
0157 
0158 Data Objects
0159 ************
0160 Data Objects are objects which transform primitives into other
0161 primitives.
0162 
0163 Equations
0164 ---------
0165 .. autoclass:: Equation
0166    :members:
0167    :inherited-members:
0168 
0169 Spectra
0170 -------
0171 .. autoclass:: Spectrum
0172    :members:
0173    :inherited-members:
0174 
0175 Histograms
0176 ----------
0177 .. autoclass:: Histogram
0178    :members:
0179    :inherited-members:
0180 
0181 Linear Fit
0182 ----------
0183 .. autoclass:: LinearFit
0184    :members:
0185    :inherited-members:
0186 
0187 Polynomial Fit
0188 --------------
0189 .. autoclass:: PolynomialFit
0190    :members:
0191    :inherited-members:
0192 
0193 Flag Filter
0194 --------------
0195 .. autoclass:: FlagFilter
0196    :members:
0197    :inherited-members:
0198 
0199 Relations
0200 *********
0201 Relations are objects which can be added to a plot.
0202 
0203 Curves
0204 ------
0205 .. autoclass:: Curve 
0206    :members:
0207    :inherited-members:
0208 
0209 Images
0210 ------
0211 .. autoclass:: Image 
0212    :members:
0213    :inherited-members:
0214 
0215 Annotations
0216 ***********
0217 Annotations along with interactive items (see the next section) can be used to turn kst into a graphing calculator, a tetris client, and maybe even a web browser...
0218 
0219 .. autoclass:: Label
0220    :members:
0221    :inherited-members:
0222    :exclude-members: set_fill_color, set_fill_style, set_stroke_style, set_stroke_width, set_stroke_brush_color, set_stroke_brush_style, set_stroke_join_style, set_stroke_cap_style, set_fixed_aspect_ratio, set_size
0223 .. autoclass:: Legend
0224    :members:
0225    :inherited-members:
0226    :exclude-members: set_fixed_aspect_ratio, set_size
0227 .. autoclass:: Box
0228    :members:
0229    :inherited-members:
0230 
0231 .. autoclass:: Circle
0232    :members:
0233    :inherited-members:
0234    :exclude-members: set_stroke_join_style, set_stroke_cap_style, set_fixed_aspect_ratio, set_size
0235 
0236 .. autoclass:: Ellipse
0237    :members:
0238    :inherited-members:
0239    :exclude-members: set_stroke_join_style, set_stroke_cap_style
0240 
0241 .. autoclass:: Line
0242    :members:
0243    :inherited-members:
0244    :exclude-members: set_fill_color, set_fill_style, set_stroke_join_style, set_fixed_aspect_ratio, set_size
0245 
0246 .. autoclass:: Arrow
0247    :members:
0248    :inherited-members:
0249    :exclude-members: set_fill_color, set_fill_style, set_stroke_join_style, set_fixed_aspect_ratio, set_size
0250 
0251 .. autoclass:: Picture
0252    :members:
0253    :inherited-members:
0254    :exclude-members: set_fill_color, set_fill_style, set_stroke_style, set_stroke_width, set_stroke_brush_color, set_stroke_brush_style, set_stroke_join_style, set_stroke_cap_style
0255 
0256 .. autoclass:: SVG
0257    :members:
0258    :inherited-members:
0259    :exclude-members: set_fill_color, set_fill_style, set_stroke_style, set_stroke_width, set_stroke_brush_color, set_stroke_brush_style, set_stroke_join_style, set_stroke_cap_style
0260 
0261 .. autoclass:: Plot
0262    :members:
0263    :inherited-members:
0264 
0265 Interactive items
0266 *****************
0267 Interactive items are controls which are part of a kst view and use QtNetwork.QLocalSocket to notify the script when the user has interacted with them. They can only be created through scripts.
0268 
0269 .. autoclass:: Button
0270    :members:
0271    :inherited-members:
0272 
0273 .. autoclass:: LineEdit
0274    :members:
0275    :inherited-members:
0276 
0277 Pykstplot
0278 *********
0279 pykstplot re-implements a tiny subset of matplotlib.pyplot.  It is included by importing pykstplot, 
0280 and is conceptually incompatible with pykst.
0281 
0282 .. automodule:: pykstplot
0283    :members: