Column |
---|
| Info |
---|
| | Useful projection parameters |
---|
layout | Profile: create the Cartesian ProjectionFor our vertical profile, we will need : - a horizontal regular axis for a temperature range going from -60oC to 20oC.
- a vertical logarithmic axis going from 1020 hPa to 10 hPa
Have a look at the Subpage Documentation and at the Axis Plotting Documentation, and try to get the 0oC grid line highlighted. Section |
---|
Column |
---|
| Info |
---|
| Useful projection parameters |
---|
subpage_map_projection | subpage_x_axis_type | subpage_y_axis_type | subpage_x_min | subpage_y_min | subpage_x_max | subpage_y_max |
Useful axis parameters |
---|
axis_orientation | axis_type | axis_grid | axis_grid_reference | axis_title |
Code Block |
---|
theme | Confluence |
---|
language | python |
---|
title | Python - set-up of cartesian projection |
---|
collapse | true |
---|
| # importing Magics module
from Magics.macro import *
# define the output
output = output(output_formats=['png'],
output_name_first_page_number='off',
output_name="profile_step1")
projection = mmap(
subpage_map_projection='cartesian',
subpage_x_axis_type='regular',
subpage_y_axis_type='logarithmic',
subpage_x_min=-70.,
subpage_x_max=20.,
subpage_y_min=1020.,
subpage_y_max=10.,)
#define the vertical axis
vertical = maxis(
axis_orientation='vertical',
axis_grid='on',
axis_type='logarithmic',
axis_tick_label_height=0.4,
axis_tick_label_colour='charcoal',
axis_grid_colour='charcoal',
axis_grid_line_style='dash',
axis_title='on',
axis_title_text='Pressure',
axis_title_font='arial',
axis_title_font_style='bold',
axis_title_height=1.,
)
# define the horizontal axis
horizontal = maxis(
axis_orientation='horizontal',
axis_type='regular',
axis_tick_label_height=0.4,
axis_tick_label_colour='charcoal',
axis_grid='on',
axis_grid_colour='charcoal',
axis_grid_thickness=1,
axis_grid_reference_level=0.,
axis_grid_reference_line_style='solid',
axis_grid_reference_thickness=1,
axis_grid_line_style='dash',)
plot(output, projection, vertical, horizontal) |
Column |
---|
| Image Removed |
Here is the list of levels, and the list of Temperature in Kelvin at each levels. levels = [1.,2.,3,5,7,10,20,30,50,70,100,150,200,250,300,400,500,600,700,800,850,900,925,950,1000] kelvin = ([263.118652344,254.822738647,242.517868042,223.301025391,219.254943848,216.710174561,216.507095337, 215.398986816,211.643295288,207.18812561,207.172134399,217.097396851,223.809326172,235.13168335,243.377059937,260.635147095,272.02935791,272.145584106,273.448501587,279.562927246,281.745040894,285.503082275,287.543685913,289.284072876,292.170974731] We can pass these arrays to Magics using the minput object . Check the Input Data Documentation for more information about the parameters. Note that we want to use Celsius in our graph... The mgraph object can then be used to preform the visualisation. All the parameters can be found in the Graph Plotting Page. Section |
---|
Column |
---|
| Info |
---|
| Useful input parameters |
---|
input_x_values | input_y_values |
Useful graph parameters |
---|
graph_line_colour | graph_line_thickness |
Code Block |
---|
theme | Confluence |
---|
language | python |
---|
title | Python - Input data for graph |
---|
collapse | true |
---|
| # importing Magics module
from Magics.macro import *
# define the output
output = output(output_formats=['png'],
output_name_first_page_number='off',
output_name="profile_step2")
projection = mmap(
subpage_map_projection='cartesian',
subpage_x_axis_type='regular',
subpage_y_axis_type='logarithmic',
subpage_x_min=-70.,
subpage_x_max=20.,
subpage_y_min=1020.,
subpage_y_max=10.,)
#define the vertical axis
vertical = maxis(
axis_orientation='vertical',
axis_grid='on',
axis_type='logarithmic',
axis_tick_label_height=0.4,
axis_tick_label_colour='charcoal',
axis_grid_colour='charcoal',
axis_grid_line_style='dash',
axis_title='on',
axis_title_text='Pressure',
axis_title_font='arial',
axis_title_font_style='bold',
axis_title_height=1.,
)
# define the horizontal axis
horizontal = maxis(
axis_orientation='horizontal',
axis_type='regular',
axis_tick_label_height=0.4,
axis_tick_label_colour='charcoal',
axis_grid='on',
axis_grid_colour='charcoal',
axis_grid_thickness=1,
axis_grid_reference_level=0.,
axis_grid_reference_line_style='solid',
axis_grid_reference_thickness=1,
axis_grid_line_style='dash',)
levels = [1.,2.,3,5,7,10,20,30,50,70,100,150,200,250,300,400,500,600,700,800,850,900,925,950,1000]
kelvin = numpy.array([263.118652344,254.822738647,242.517868042,223.301025391,219.254943848,216.710174561,216.507095337,
215.398986816,211.643295288,207.18812561,207.172134399,217.097396851,
223.809326172,235.13168335,243.377059937,260.635147095,272.02935791,
272.145584106,273.448501587,279.562927246,281.745040894,285.503082275,287.543685913,289.284072876,292.170974731])
celsius = kelvin -273.16
# Define the input of the graph
data = minput(input_x_values = celsius,
input_y_values = levels, )
#define the graph action.
graph = mgraph( legend='on' ,
legend_user_text= 'Tempe',
graph_line_colour="navy",
graph_line_thickness= 3, )
plot(output, projection, vertical, horizontal, data, graph) |
Column |
---|
| Image Removed |
Here is the list of pressure levels, and the list of u and v components for each pressure level. levels = [1.,2.,3,5,7,10,20,30,50,70,100,150,200,250,300,400,500,600,700,800,850,900,925,950,1000] u_component = [77.815612793,63.232711792,44.9090881348,28.2789916992,17.401763916, 11.8307037354,-0.725036621094,-4.75889587402,-7.83796691895,-3.76489257812, -6.18388366699,-13.1139526367,-13.05027771,-15.1851959229,-23.5844726562, -27.866394043,-33.0458984375,-45.8946380615,-41.540222168,-39.6210327148, -37.6231689453,-32.947265625,-29.4743499756,-22.0828552246,-10.0008392334] v_component = [7.38911437988,5.23355102539,0.636322021484,-3.75567626953, 0.167388916016,-3.12893676758,-3.60003662109,0.0688171386719, 0.305236816406,7.06889343262,8.10516357422,11.1141815186, -2.29931640625,3.08065795898,7.5965423584,11.0112915039, 13.6437530518,11.2753143311,11.1552124023,13.1494903564, 6.01538085938,1.37588500977,-0.0724334716797,-0.953598022461,-0.508377075195] We can pass these arrays to Magics using the minput object . Check the Input Data Documentation for more information about the parameters. We want to plot these winds as red falgs on the vertical of -20. The mgraph object can then be used to preform the visualisation. All the parameters can be found in the Graph Plotting Page. Do not forget the add a legend with a meaningful text! Section |
---|
Column |
---|
| Info |
---|
| Useful input parameters |
---|
input_x_values | input_y_values | input_x_component_values | input_y_component_values |
Useful graph parameters |
---|
graph_type | graph_flag_colour | graph_flag_length | legend | legend_user_text |
Code Block |
---|
theme | Confluence |
---|
language | python |
---|
title | Python - Input data and Flags plotting |
---|
collapse | true |
---|
| # importing Magics module
from Magics.macro import *
# define the output
output = output(output_formats=['png'],
output_name_first_page_number='off',
output_name="profile_step2")
projection = mmap(
subpage_map_projection='cartesian',
subpage_x_axis_type='regular',
subpage_y_axis_type='logarithmic',
subpage_x_min=-70.,
subpage_x_max=20.,
subpage_y_min=1020.,
subpage_y_max=10.,)
#define the vertical axis
vertical = maxis(
axis_orientation='vertical',
axis_grid='on',
axis_type='logarithmic',
axis_tick_label_height=0.4,
axis_tick_label_colour='charcoal',
axis_grid_colour='charcoal',
axis_grid_line_style='dash',
axis_title='on',
axis_title_text='Pressure',
axis_title_font='arial',
axis_title_font_style='bold',
axis_title_height=1.,
)
# define the horizontal axis
horizontal = maxis(
axis_orientation='horizontal',
axis_type='regular',
axis_tick_label_height=0.4,
axis_tick_label_colour='charcoal',
axis_grid='on',
axis_grid_colour='charcoal',
axis_grid_thickness=1,
axis_grid_reference_level=0.,
axis_grid_reference_line_style='solid',
axis_grid_reference_thickness=1,
axis_grid_line_style='dash',)
levels = [1.,2.,3,5,7,10,20,30,50,70,100,150,200,250,300,400,500,600,700,800,850,900,925,950,1000]
kelvin = numpy.array([263.118652344,254.822738647,242.517868042,223.301025391,219.254943848,216.710174561,216.507095337,
215.398986816,211.643295288,207.18812561,207.172134399,217.097396851,
223.809326172,235.13168335,243.377059937,260.635147095,272.02935791,
272.145584106,273.448501587,279.562927246,281.745040894,285.503082275,287.543685913,289.284072876,292.170974731])
celsius = kelvin -273.16
# Define the input of the graph
data = minput(input_x_values = celsius,
input_y_values = levels, )
#define the graph action.
graph = mgraph( legend='on' ,
legend_user_text= 'Tempe',
graph_line_colour="navy",
graph_line_thickness= 3, )
plot(output, projection, vertical, horizontal, data, graph) |
Column |
---|
| Image Removed |
Time Series: Setting the Cartesian Projection for the Mean Sea Level Pressure time seriesIn this exercise, we will learn how to setup a date Coordinate, and browse the parameters available to style the style a date axis. We want - a horizontal date axis going from the 2012-10-27at 00:00:00 to 2012-11-02 12:00:00
- a vertical regular axis going from 950 hPa to 1005 hPa
Have a look at the Subpage Documentation and at the Axis Plotting Documentation, Section |
---|
Column |
---|
| Info |
---|
| Useful projection parameters |
---|
subpage_map_projection | subpage_x_axis_type | subpage_y_axis_type | subpage_x_date_min | subpage_y_min | subpage_x_date_max | subpage_y_max |
Useful axis parameters |
---|
axis_orientation | axis_type |
Code Block |
---|
theme | Confluence |
---|
language | python |
---|
title | Python - Date Coordinates system |
---|
collapse | true |
---|
| # importing Magics module
from Magics.macro import *
# define the output
output = output(output_formats=['png'],
output_name_first_page_number='off',
output_name="time_serie_step1")
projection = mmap(
subpage_map_projection='cartesian',
subpage_x_axis_type='date',
subpage_y_axis_type='regular',
subpage_x_date_min='2012-10-27 00:00:00',
subpage_x_date_max='2012-11-02 12:00:00',
subpage_y_max=1050.,
subpage_y_min=950.,
)
# Vertical axis
vertical = maxis(
axis_orientation='vertical',
axis_grid='on',
axis_type='regular',
axis_tick_label_height=0.4,
axis_tick_label_colour='charcoal',
axis_grid_colour='charcoal',
axis_grid_thickness=1,
axis_grid_reference_level=0.,
axis_grid_reference_line_style='solid',
axis_grid_reference_thickness=1,
axis_grid_line_style='dash',
axis_title='on',
axis_title_text='Pressure',
axis_title_font='arial',
axis_title_height=0.5,
)
# Horizontal axis
horizontal = maxis(
axis_orientation='horizontal',
axis_type='date',
axis_tick_label_height=0.4,
axis_tick_label_colour='charcoal',
axis_grid='on',
axis_grid_colour='charcoal',
axis_grid_thickness=1,
axis_grid_line_style='dash',
)
plot(output, projection, horizontal, vertical) |
Column |
---|
| Image Removed |
The values for our time series are in CSV (Comma-Separeted-Value) ascii file called msl.csv. Code Block |
---|
title | first few lines of msl.csv |
---|
| 1,2012-10-27 00:00:00,1020.64125,0
2,2012-10-27 12:00:00,1017.261875,0.1220703125
3,2012-10-28 00:00:00,1014.27125,-9.58071727163e-21
4,2012-10-28 12:00:00,1011.97375,-2.80979885101e-20 |
The valid date is defined in the second column, the value of msl in the third. This information need to be given to Magics . This can be done with the mtable data action. The mgraph action will the be used to define the curev attributes. All the parameters can be found in the Graph Plotting Page. You can always add a title using the mtext object. Section |
---|
Column |
---|
| Info |
---|
| Useful table parameters |
---|
table_filename | table_variable_identifier_type | table_x_type | table_x_variable | table_y_variable | table_header_row |
Useful graph parameters |
---|
graph_line_colour | legend | legend_user_text |
Code Block |
---|
theme | Confluence |
---|
language | python |
---|
title | Python - CSV file |
---|
collapse | true |
---|
| # importing Magics module
from Magics.macro import *
# define the output
output = output(output_formats=['png'],
output_name_first_page_number='off',
output_name="time_serie_step2")
projection = mmap(
subpage_map_projection='cartesian',
subpage_x_axis_type='date',
subpage_y_axis_type='regular',
subpage_x_date_min='2012-10-27 00:00:00',
subpage_x_date_max='2012-11-02 12:00:00',
subpage_y_max=1050.,
subpage_y_min=950.,
)
# Vertical axis
vertical = maxis(
axis_orientation='vertical',
axis_grid='on',
axis_type='regular',
axis_tick_label_height=0.4,
axis_tick_label_colour='charcoal',
axis_grid_colour='charcoal',
axis_grid_thickness=1,
axis_grid_reference_level=0.,
axis_grid_reference_line_style='solid',
axis_grid_reference_thickness=1,
axis_grid_line_style='dash',
axis_title='on',
axis_title_text='Pressure',
axis_title_font='arial',
axis_title_height=0.5,
)
# Horizontal axis
horizontal = maxis(
axis_orientation='horizontal',
axis_type='date',
axis_tick_label_height=0.4,
axis_tick_label_colour='charcoal',
axis_grid='on',
axis_grid_colour='charcoal',
axis_grid_thickness=1,
axis_grid_line_style='dash',)
#load the csv file, and define how to interpret it
data = mtable(table_filename = "msl.csv",
table_x_type='date',
table_variable_identifier_type='index',
table_x_variable = "2",
table_y_variable = "3",
table_header_row = 0
)
#define the visualisation
graph = mgraph( legend='on' ,
legend_user_text= '<font colour="navy" size="0.3"> Mean Sea Level</font>',
graph_line_colour="navy",
graph_line_thickness= 3, )
#add a title
title = mtext(
text_lines= ['Mean Sea Level plotted as curve...', ],
text_html= 'true',
text_justification= 'left',
text_font_size= 0.8,
text_colour= 'charcoal',
)
plot(output, projection, horizontal, vertical, data, graph, title) |
Column |
---|
| Image Removed |
Time Series : Using Automatic Axis and bar plottingMagics can automatically set-up the coordinates system according to the plotted data. In this exercise, we will use this functionality to draw the time series of the precipitation. - The horizontal date coordinate system is set automatically.
- The vertical coordinate system is regular going from 0 to 5
The data will be pass to Magics using arrays: dates = ["2012-10-27 00:00:00","2012-10-27 12:00:00","2012-10-28 00:00:00", "2012-10-28 12:00:00","2012-10-29 00:00:00","2012-10-29 12:00:00", "2012-10-30 00:00:00","2012-10-30 12:00:00", "2012-10-31 00:00:00","2012-10-31 12:00:00", "2012-11-01 00:00:00","2012-11-01 12:00:00", "2012-11-02 00:00:00","2012-11-02 12:00:00"] precip = [0.,0.1220703125,0.,0., 0., 3.16429138184, 2.18200683594,1.75476074219,0,0,0,0,0,0.] We want to display the information using bar plotting. We will perhaps need to check quickly Section |
---|
Column |
---|
| Info |
---|
| Useful projection parameters |
---|
subpage_x_automatic |
Useful input parameters |
---|
input_x_type | input_date_x_values | input_y_values | input_y2_values |
Useful graph parameters |
---|
graph_type | graph_bar_line_colour | graph_shade_colour | legend | legend_user_text |
Code Block |
---|
theme | Confluence |
---|
language | python |
---|
title | Python - Automatic projection and bar plotting |
---|
collapse | true |
---|
| # importing Magics module
from Magics.macro import *
# define the output
output = output(output_formats=['png'],
output_name_first_page_number='off',
output_name="time_serie_step3")
# Setting the cartesian view
projection = mmap(
subpage_map_projection='cartesian',
subpage_x_axis_type='date',
subpage_y_axis_type='regular',
subpage_x_automatic='on',
subpage_y_max=5.,
subpage_y_min=0.,
)
# Vertical axis
vertical = maxis(
axis_orientation='vertical',
axis_grid='on',
axis_type='regular',
axis_tick_label_height=0.4,
axis_tick_label_colour='charcoal',
axis_grid_colour='charcoal',
axis_grid_thickness=1,
axis_grid_reference_level=0.,
axis_grid_reference_line_style='solid',
axis_grid_reference_thickness=1,
axis_grid_line_style='dash',
axis_title='on',
axis_title_text='Amount of rain',
axis_title_font='arial',
axis_title_height=0.5,
)
# Horizontal axis
horizontal = maxis(
axis_orientation='horizontal',
axis_type='date',
axis_tick_label_height=0.4,
axis_tick_label_colour='charcoal',
axis_grid='on',
axis_grid_colour='charcoal',
axis_grid_thickness=1,
axis_grid_line_style='dash',
)
dates = ["2012-10-27 00:00:00","2012-10-27 12:00:00","2012-10-28 00:00:00",
"2012-10-28 12:00:00","2012-10-29 00:00:00","2012-10-29 12:00:00",
"2012-10-30 00:00:00","2012-10-30 12:00:00",
"2012-10-31 00:00:00","2012-10-31 12:00:00",
"2012-11-01 00:00:00","2012-11-01 12:00:00",
"2012-11-02 00:00:00","2012-11-02 12:00:00"]
precip = [0.,0.1220703125,0.,0., 0., 3.16429138184,
2.18200683594,1.75476074219,0,0,0,0,0,0.]
#defining the data
data = minput(
input_x_type='date',
input_date_x_values= dates,
input_y2_values= precip,
input_y_values= [0.] * len(precip),
)
#defining the visualisation
bar = mgraph( legend='on' ,
graph_type ='bar',
graph_bar_line_colour = "navy",
graph_shade_colour = "evergreen",
legend_user_text= '<font colour ="evergreen" size="0.4"> Precipitation </font>',
graph_line_colour="navy",
graph_bar_width = 3600.00 *6,
graph_line_thickness= 3, )
#adding a title
title = mtext(
text_lines= ['Precipitation as Bar Plotting..', ],
text_html= 'true',
text_justification= 'left',
text_font_size= 0.8,
text_colour= 'charcoal',
)
plot(output, projection, vertical, horizontal, data, bar, title) |
Column |
---|
| Image Removed |
Finally, A bit of layout ...On our image, we want to create 3 pages.. We will use the pseudo action page to do that.. The position of the page is set with the 4 following parameters - page_x_position / page_y_position : to position in cm the bottom left corner of the page in its parent
- page_x_length / page_y_length : the dimension in cm.
The drawing area ( where the plotting is rendered) is called subpage and can position into the page using the 4 following parameters - subpage_x_position / subpage_y_position : to position in cm the bottom left corner of the drawing area (subpage) in its parent page.
- subpage_x_length / subpage_y_length : the dimension in cm.
Section |
---|
Column |
---|
| Info |
---|
| Useful page parameters |
---|
layout | page_x_position | page_y_position | page_x_length | page_y_length | subpage_x_position | subpage_y_position | subpage_x_length | subpage_y_length | page_id_line | page_frame |
Code Block |
---|
theme | Confluence |
---|
language | python |
---|
title | Python - Automatic projection and bar plotting |
---|
collapse | true |
---|
| horizontal = maxis(
axis_orientation='horizontal',
axis_type='date',
axis_tick_label_height=0.4,
axis_tick_label_colour='charcoal',
axis_grid='on',
axis_grid_colour='charcoal',
axis_grid_thickness=1,
axis_grid_line_style='dash',
)
dates = ["2012-10-27 00:00:00","2012-10-27 12:00:00","2012-10-28 00:00:00",
"2012-10-28 12:00:00","2012-10-29 00:00:00","2012-10-29 12:00:00",
"2012-10-30 00:00:00","2012-10-30 12:00:00",
"2012-10-31 00:00:00","2012-10-31 12:00:00",
"2012-11-01 00:00:00","2012-11-01 12:00:00",
"2012-11-02 00:00:00","2012-11-02 12:00:00"]
precip = [0.,0.1220703125,0.,0., 0., 3.16429138184,
2.18200683594,1.75476074219,0,0,0,0,0,0.]
#defining the data
data = minput(
input_x_type='date',
input_date_x_values= dates,
input_y2_values= precip, |
Column |
---|
| Image Removed
|
| | |
Code Block |
---|
theme | Confluence |
---|
language | python |
---|
title | Python - complex layout |
---|
collapse | true |
---|
| # importing Magics module
from Magics.macro import *
from profile import profile
from timeserie import msl_timeserie
from timeserie import precip_timeserie
#Setting the output
output = output(output_name = 'layout',
output_formats = ["png"],
output_name_first_page_number = "off")
profile_left = page(
layout='positional',
page_frame='off',
page_x_length=15.,
page_id_line='off',
subpage_y_length=17.,
)
graph_bottom = page(
layout='positional',
page_frame='off',
page_x_length=15.,
page_y_length= 10.,
page_id_line='off',
page_x_position=15.,
page_y_position=0.5,
subpage_x_position=1.5,
subpage_y_position=0.5,
subpage_y_length=7.,
)
graph_top = page(
layout='positional',
page_frame='off',
page_x_length=15.,
page_y_length=10.,
page_id_line='off',
page_x_position=15.,
page_y_position=10.5,
subpage_x_position=1.5,
subpage_y_position=0.5,
subpage_y_length=7.,
)
plot(output,
profile_left, profile(title_size=0.6),
graph_bottom, msl_timeserie(title_size=0.6),
graph_top, precip_timeserie(title_size=0.6),
) |
|
Column |
---|
| ![](/download/attachments/24317186/curves.png?version=2&modificationDate=1362663372325&api=v2&effects=border-simple,blur-border)
|
|