Code Monkey home page Code Monkey logo

jaspe's Introduction

JASPE

JASPE stands for Just Another Stereoplot§ in a Python Environment. This is a pet project that I develop at my own pace and according to my needs. The script is therefore not primarily intended for general use but my own. You should not expect updates, new features, or bug fixes in reasonable times, nor can I assure you that the project will be abandoned for a large period of time. My main goal with this is to include stereographic/equal-area projections in my Python workflow and learn. If you are looking for a software specifically dedicated to this task there are other options out there, for example here, here, or here. In any case, if you decide to use it or want to access the source code out of curiosity, do so at your own risk and responsibility downloading the script here. You can also fork the project on GitHub since it is free and open-source.

So far, the script only performs basic tasks. One function tweaks the default features of matplotlib plots (i.e. the standard Python plotting library) to generate single or multiple stereoplots, another is for importing tabular-like data, and the rest to transform between different reference frames; from spherical to equal-area or stereographic (equal-angle) coordinates or from spherical to cartesian coordinates and vice versa.

§ As stated above, the JASPE script is intended to produce both stereographic (Wulff) and equal-area (a.k.a. Schmidt net or Lambert azimuthal) projections. I chose the word stereoplot because is very familiar in geosciences and used by geoscientists to refer, somewhat loosely, to both projections. Strictly speaking the equal-area projection is not a stereographic projection, but you can exchange the word Stereoplot for Schmidt net plot and the acronym JASPE will remain the same.

Requirements

The script requires Python 3.5 or higher and the scientific libraries Numpy (1.11 or higher), Matplotlib (2.0 or higher) and Pandas. For this, we recommend installing the Continuum Anaconda or the Enthought Canopy and use the Spyder or the Canopy IDEs respectively.

Quick examples

The script operates through the command line. The example below requires v0.3 or higher for correct operation.

Plot data

# Create a simple stereoplot
fig, ax = stereoplot()

# Plot some data using the function plot_data
plot_eq_area(ax, 180, 45)  # plot in equal-area projection
plot_eq_angle(ax, 180, 45)  # plot in equal-angle projection

Plot a small dataset defining the features of the markers

# Create dataset
azimuths = [0, 45, 90, 135, 180, 225, 270, 315, 360]
dips = [0, 10, 20, 30, 40, 50, 70, 80, 90]

# plot
fig, ax = stereoplot()  # create plot
plot_eq_area(ax, azimuths, dips, marker='h', color='C3', markersize=9)

Import tabular-like data from a text file and plot them

# Import data. The function will ask you for the location of the file through a file selection dialog
dataset = import_data()  

Trend  Plunge Type
0    5.0    67.0    C
1    9.0     9.0    C
2   22.0    64.0    C
3   27.0    16.0    C
4   27.0    52.0    C
...
  Trend  Plunge Type
107  331.0    81.0    C
108  340.0    63.0    C
109  345.0    16.0    C
110  352.0    26.0    C
111  355.0    24.0    C

fig, ax = stereoplot()  # create plot
plot_eq_area(ax, dataset['Trend'], dataset['Plunge'], marker='o', markersize=8, label='Kamb (1959) data')
ax.legend()  # add legend

Create plots with multiple stereos

# Create a figure with two stereos (1 row * 2 columns)
fig, (ax1, ax2) = stereoplot(nrows=1, ncols=2)

# plot linear data in the left (ax1) stereo
plot_eq_area(ax1, azimuths, dips)

# plot Kamb data in the right (ax2) stereo
plot_eq_area(ax2, dataset['Trend'], dataset['Plunge'], color='C3')

jaspe's People

Contributors

marcoalopez avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.