python - Location of contour lines -


below code , plot:

import matplotlib import matplotlib.mlab mlab import matplotlib.cm cm import matplotlib.pyplot plt import numpy np %matplotlib inline  delta = 0.00025 a=0 x = np.arange(0, 0.10, delta) y = np.arange(0, 0.1, delta) x, y = np.meshgrid(x, y) z = a*(x**2+y**2)+2*x*y  manual_locations = [(0.1,0.1), (0.2,0.2), (0.3,0.3),                      (0.015, 0.015), (0.00255, 0.0025), (0.00005,0.00005)] line_widths = (1, 1, 1, 1, 1, 1)  plt.figure() cs = plt.contour(x, y, z, 6,                        # add 6 contour lines                  linewidths=line_widths,            # line widths                  colors = line_colours)             # line colours  plt.clabel(cs, inline=1,                            # add labels           fontsize=10,                             # label font size            manual=manual_locations)                 # label locations plt.title('indifference map')        # title  plt.show() 

enter image description here

it seems manual_locations nothing, python picks equally spaced contour lines automatically. while want investigate more details around 0. how can see more curves/contour lines converging (0,0)? in advance.

the easiest way explore parts of data in more details levels. sets z-values examine, , in question phrase (x,y) location inspect, it's bit backwards how contour works specify location points directly.

you inspect (0,0) region changing boundaries of plot appropriately.

below, use log values levels, linear values work equally well, far more common, , easier interpret. log values emphasis part of plot you're interested in.

enter image description here

import matplotlib import matplotlib.mlab mlab import matplotlib.cm cm import matplotlib.pyplot plt import numpy np #%matplotlib inline  delta = 0.00025 a=0 x = np.arange(0, 0.10, delta) y = np.arange(0, 0.1, delta) x, y = np.meshgrid(x, y) z = a*(x**2+y**2)+2*x*y  manual_locations = [(0.1,0.1), (0.2,0.2), (0.3,0.3),                      (0.015, 0.015), (0.00255, 0.0025), (0.00005,0.00005)] line_widths = (1, 1, 1, 1, 1, 1)  plt.figure() cs = plt.contour(x, y, z, 6,                        # add 6 contour lines                  linewidths=line_widths,                   #levels=np.linspace(0, .003, 20))                     levels=np.logspace(-5, -2, 20))  plt.clabel(cs, inline=1,                            # add labels           fontsize=10,           fmt="%.5f") plt.title('indifference map')        # title  plt.show() 

if need contour @ specific location, put (x,y) values location equation calculate z-value @ location, , use value 1 of values in levels argument.


Comments

Popular posts from this blog

javascript - jQuery: Add class depending on URL in the best way -

caching - How to check if a url path exists in the service worker cache -

Redirect to a HTTPS version using .htaccess -