Reputation: 11
I want to use the plt. contourf() function to draw contour lines and draw the following image. enter image description here But the drawn effect is like this. enter image description here My data has the following characteristics:,
My code is as follows
def draw_contour():
np_array=np.load("terrain.npy")
x,y=np.meshgrid(np.linspace(0,80,80),np.linspace(0,80,80))
plt.contourf(x,y,np_array[:,0].reshape(80,80),levels=100000,locator=ticker.LogLocator(),alpha=1,linestyles='--',cmap='terrain')
plt.colorbar(label='Elevation')
plt.xlabel('X')
plt.ylabel('y')
plt.show()
print('end')
if __name__=='__main__':
draw_contour()
Here are a part of my data:
1.599047500000000004e-09 1.313549499999999921e-09 2.957425000000000259e-09 6.581700000000000133e-09 1.403785499999999981e-08 1.061308999999999938e-08 1.348184999999999972e-08 2.813344999999999904e-08 2.813889999999999927e-08 6.593084999999999510e-08 4.467239999999999972e-08 9.216970000000000774e-08 1.199795000000000057e-07 1.266535000000000032e-07 1.628744999999999938e-07 2.174800000000000125e-07 2.680564999999999889e-07 3.482195000000000166e-07 4.478609999999999629e-07 6.015924999999999919e-07 6.991690000000000054e-07 9.022254999999999814e-07 1.082098000000000138e-06 1.211669999999999997e-06 1.579855000000000140e-06 1.807479999999999930e-06 2.053945000000000119e-06 2.327974999999999933e-06 3.122684999999999986e-06 3.711414999999999938e-06 4.546999999999999833e-06 4.964809999999999311e-06 5.417750000000000772e-06 5.684454999999999771e-06 5.768959999999999904e-06 5.680670000000000111e-06 5.783034999999999426e-06 6.251639999999999830e-06 6.528230000000000006e-06 6.932649999999999600e-06 7.512599999999999866e-06 8.127784999999999296e-06 8.237690000000000068e-06 8.085139999999999301e-06 8.214044999999999382e-06 7.140290000000000207e-06 6.213300000000000295e-06 4.924879999999999509e-06 3.793549999999999873e-06 3.136120000000000053e-06 2.634600000000000152e-06 2.143420000000000224e-06 1.861609999999999952e-06 1.693629999999999953e-06 1.369885000000000014e-06 1.172089999999999903e-06 9.570600000000000745e-07 7.322484999999999146e-07 6.445674999999999913e-07 4.931660000000000103e-07 3.772570000000000012e-07 3.313564999999999800e-07 2.411370000000000237e-07 2.197959999999999917e-07 1.221715000000000031e-07 9.561480000000000197e-08 7.027140000000000282e-08 4.637055000000000093e-08 3.699664999999999797e-08 3.595509999999999881e-08 1.615459999999999961e-08 1.293254999999999956e-08 1.561520000000000208e-08 5.520590000000000268e-09 1.249054499999999970e-08 4.033669999999999782e-09 2.918890000000000040e-09 2.194874999999999826e-09 2.593430000000000215e-09 1.713230999999999995e-09 1.717760000000000074e-09 2.730614999999999881e-09 4.694524999999999978e-09 4.423450000000000477e-09 1.250166000000000085e-08 1.678816999999999911e-08 2.667375000000000087e-08 3.025714999999999906e-08 6.459900000000000822e-08 9.240324999999999066e-08 1.006696000000000057e-07 1.284040000000000161e-07 1.766920000000000048e-07 2.041970000000000119e-07 2.958125000000000159e-07 4.046420000000000045e-07 4.487385000000000447e-07 5.517469999999999708e-07 6.990484999999999614e-07 8.555759999999999845e-07 1.211015000000000127e-06 1.493704999999999914e-06 1.875334999999999977e-06 2.117339999999999874e-06 2.690965000000000247e-06 3.052610000000000069e-06 3.750235000000000017e-06 4.785575000000000340e-06 5.876430000000000588e-06 7.272519999999999956e-06 8.127759999999999241e-06 9.176440000000000185e-06 9.718989999999998913e-06 9.541909999999999924e-06 1.009613500000000053e-05 9.358070000000000681e-06 9.412449999999999981e-06 9.943400000000000377e-06 1.019169999999999934e-05 1.135549999999999995e-05 1.236460000000000017e-05 1.336515000000000027e-05 1.402880000000000026e-05 1.456100000000000001e-05 1.409154999999999894e-05 1.271280000000000134e-05 1.121449999999999910e-05 8.775780000000000196e-06 7.384385000000000620e-06 5.618095000000000121e-06 5.211115000000000166e-06 4.157110000000000251e-06 3.368279999999999877e-06 2.866249999999999874e-06 2.511964999999999928e-06 1.715265000000000001e-06 1.568704999999999832e-06 1.194760000000000145e-06 1.007740500000000063e-06 7.623405000000000493e-07 6.426074999999999922e-07 4.934790000000000740e-07 3.598349999999999925e-07 2.904885000000000140e-07 2.397254999999999717e-07 1.250329999999999788e-07 1.138895000000000088e-07 6.854760000000000429e-08 6.385954999999999958e-08 3.621410000000000133e-08 2.733829999999999937e-08 3.806825000000000076e-08 1.726340000000000224e-08 1.447940000000000027e-08 8.468105000000000507e-09 6.807524999999999609e-09 7.171535000000000299e-09 2.633965000000000220e-09 2.297965000000000139e-09 5.165630000000000080e-09 4.846629999999999837e-09 8.881695000000000109e-09 1.353762999999999971e-08 1.354510000000000030e-08 1.824784499999999925e-08 4.306010000000000188e-08 4.959240000000000010e-08 5.829675000000000220e-08 1.005454499999999959e-07 1.091780000000000000e-07 1.352439999999999900e-07 1.935979999999999843e-07 3.525489999999999893e-07 3.263290000000000100e-07 4.202960000000000202e-07 6.144104999999999681e-07 7.485635000000000710e-07 9.993590000000000485e-07 1.220029999999999947e-06 1.600339999999999995e-06 1.906590000000000028e-06 2.352729999999999919e-06 3.011635000000000008e-06 3.759529999999999731e-06 4.640080000000000135e-06 5.420034999999999683e-06 6.620405000000000525e-06 8.357620000000000798e-06 1.018849499999999875e-05 1.185240000000000023e-05 1.379620000000000015e-05 1.488564999999999867e-05 1.499419999999999952e-05 1.503659999999999932e-05 1.530024999999999975e-05 1.485160000000000194e-05 1.515205000000000005e-05 1.534134999999999839e-05 1.654879999999999985e-05 1.811290000000000068e-05 1.996730000000000109e-05 2.187670000000000012e-05 2.291240000000000106e-05 2.484685000000000081e-05 2.450970000000000015e-05 2.189334999999999936e-05 1.978224999999999851e-05 1.686689999999999940e-05 1.423864999999999961e-05 1.105109999999999995e-05 9.298725000000001336e-06 6.885344999999999720e-06 6.147815000000000023e-06 4.595684999999999690e-06 3.951794999999999660e-06 3.078065000000000319e-06 2.318540000000000166e-06 1.961505000000000120e-06 1.554309999999999947e-06 1.141895000000000101e-06 8.875800000000000638e-07 6.334870000000000132e-07 4.664045000000000125e-07 3.758540000000000250e-07 3.152184999999999979e-07 2.033209999999999980e-07 1.327670000000000135e-07 1.008535999999999893e-07 9.972514999999998954e-08 4.822085000000000394e-08 3.576385000000000032e-08 3.124864999999999838e-08 1.520119999999999916e-08 1.525504999999999935e-08 1.453566499999999935e-08 1.029649999999999893e-08 3.329635000000000155e-09 4.264949999999999422e-09 2.436085000000000072e-09 1.908301999999999931e-09 3.481264999999999972e-09 1.128630500000000056e-08 1.127787999999999994e-08 2.813600000000000127e-08 2.404814999999999951e-08 6.056395000000000281e-08 8.843645000000000308e-08 8.425260000000001158e-08 1.132795000000000053e-07 1.832730000000000027e-07 2.381274999999999861e-07 3.445934999999999814e-07 4.612409999999999941e-07 5.505140000000000286e-07 7.409724999999999602e-07 8.774025000000000244e-07 1.199309999999999957e-06 1.575709999999999860e-06 2.024420000000000177e-06 2.484170000000000307e-06 2.988189999999999760e-06 3.836089999999999723e-06 4.907730000000000020e-06 5.798799999999999436e-06 6.961005000000000279e-06 8.864649999999999906e-06 1.104328000000000009e-05 1.344950000000000057e-05 1.601009999999999771e-05 1.957140000000000035e-05 2.192739999999999948e-05 2.367395000000000057e-05 2.356735000000000061e-05 2.390560000000000029e-05 2.363659999999999999e-05 2.301985000000000289e-05 2.293939999999999928e-05 2.367284999999999816e-05 2.521669999999999863e-05 2.836284999999999899e-05 3.234799999999999590e-05 3.519449999999999651e-05 3.884125000000000018e-05 3.919520000000000041e-05 4.038320000000000326e-05 3.809240000000000141e-05 3.530155000000000424e-05 3.109055000000000000e-05 2.627979999999999867e-05 2.049425000000000118e-05 1.722475000000000140e-05 1.385034999999999861e-05 1.092630000000000074e-05 8.487534999999998689e-06 6.726669999999999922e-06 5.244670000000000389e-06 4.106904999999999941e-06 3.232874999999999943e-06 2.406815000000000181e-06 1.564155000000000019e-06 1.242770000000000004e-06 9.366610000000000518e-07 7.408235000000000824e-07 5.243679999999999743e-07
Upvotes: 1
Views: 65
Reputation: 11474
One possible approach is the following. Note that I apply a circular mask:
sample_data = np.array([
1.5990475e-09, 1.3135495e-09, 2.9574250e-09, 6.5817e-09, 1.4037855e-08,
1.0613090e-08, 1.3481850e-08, 2.8133449e-08, 2.8138899e-08, 6.5930850e-08,
4.4672400e-08, 9.2169700e-08, 1.1997950e-07, 1.2665350e-07, 1.6287450e-07,
2.1748000e-07, 2.6805650e-07, 3.4821950e-07, 4.4786096e-07, 6.0159250e-07,
6.9916900e-07, 9.0222550e-07, 1.0820980e-06, 1.2116700e-06, 1.5798550e-06,
1.8074800e-06, 2.0539450e-06, 2.3279750e-06, 3.1226850e-06, 3.7114150e-06,
4.5470000e-06, 4.9648100e-06, 5.4177500e-06, 5.6844550e-06, 5.7689600e-06,
5.6806700e-06, 5.7830350e-06, 6.2516400e-06, 6.5282300e-06, 6.9326500e-06,
7.5126000e-06, 8.1277850e-06, 8.2376900e-06, 8.0851400e-06, 8.2140450e-06,
7.1402900e-06, 6.2133000e-06, 4.9248800e-06, 3.7935500e-06, 3.1361200e-06,
2.6346000e-06, 2.1434200e-06, 1.8616100e-06, 1.6936300e-06, 1.3698850e-06,
1.1720900e-06, 9.5706000e-07, 7.3224850e-07, 6.4456750e-07, 4.9316600e-07,
3.7725700e-07, 3.3135650e-07, 2.4113700e-07, 2.1979600e-07, 1.2217150e-07,
9.5614800e-08, 7.0271400e-08, 4.6370550e-08, 3.6996650e-08, 3.5955100e-08,
1.6154600e-08, 1.2932550e-08, 1.5615200e-08, 5.5205900e-09, 1.2490545e-08,
4.0336700e-09, 2.9188900e-09, 2.1948750e-09, 2.5934300e-09, 1.7132310e-09,
1.7177600e-09, 2.7306150e-09, 4.6945250e-09, 4.4234500e-09, 1.2501660e-08,
1.6788170e-08, 2.6673750e-08, 3.0257150e-08, 6.4599000e-08, 9.2403250e-08,
1.0066960e-07, 1.2840400e-07, 1.7669200e-07, 2.0419700e-07, 2.9581250e-07,
4.0464200e-07, 4.4873850e-07, 5.5174700e-07, 6.9904850e-07, 8.5557600e-07,
1.2110150e-06, 1.4937050e-06, 1.8753350e-06, 2.1173400e-06, 2.6909650e-06,
3.0526100e-06, 3.7502350e-06, 4.7855750e-06, 5.8764300e-06, 7.2725200e-06,
8.1277600e-06, 9.1764400e-06, 9.7189900e-06, 9.5419100e-06, 1.0096135e-05,
9.3580700e-06, 9.4124500e-06, 9.9434000e-06, 1.0191700e-05, 1.1355500e-05,
1.2364600e-05, 1.3365150e-05, 1.4028800e-05, 1.4561000e-05, 1.4091550e-05,
1.2712800e-05, 1.1214500e-05, 8.7757800e-06, 7.3843850e-06, 5.6180950e-06,
5.2111150e-06, 4.1571100e-06, 3.3682800e-06, 2.8662500e-06, 2.5119650e-06,
1.7152650e-06, 1.5687050e-06, 1.1947600e-06, 1.0077405e-06, 7.6234050e-07,
6.4260750e-07, 4.9347900e-07, 3.5983500e-07, 2.9048850e-07, 2.3972550e-07,
1.2503300e-07, 1.1388950e-07, 6.8547600e-08, 6.3859550e-08, 3.6214100e-08,
2.7338300e-08, 3.8068250e-08, 1.7263400e-08, 1.4479400e-08, 8.4681050e-09,
6.8075250e-09, 7.1715350e-09, 2.6339650e-09, 2.2979650e-09, 5.1656300e-09,
4.8466300e-09, 8.8816950e-09, 1.3537630e-08, 1.3545100e-08, 1.8247845e-08,
4.3060100e-08, 4.9592400e-08, 5.8296750e-08, 1.0054545e-07, 1.0917800e-07,
1.3524400e-07, 1.9359800e-07, 3.5254900e-07, 3.2632900e-07, 4.2029600e-07,
6.1441050e-07, 7.4856350e-07, 9.9935900e-07, 1.2200300e-06, 1.6003400e-06,
1.9065900e-06, 2.3527300e-06, 3.0116350e-06, 3.7595300e-06, 4.6400800e-06,
5.4200350e-06, 6.6204050e-06, 8.3576200e-06, 1.0188495e-05, 1.1852400e-05,
1.3796200e-05, 1.4885650e-05, 1.4994200e-05, 1.5036600e-05, 1.5300250e-05,
1.4851600e-05, 1.5152050e-05, 1.5341350e-05, 1.6548800e-05, 1.8112900e-05,
1.9967300e-05, 2.1876700e-05, 2.2912400e-05, 2.4846850e-05, 2.4509700e-05,
2.1893350e-05, 1.9782250e-05, 1.6866900e-05, 1.4238650e-05, 1.1051100e-05,
9.2987250e-06, 6.8853450e-06, 6.1478150e-06, 4.5956850e-06, 3.9517950e-06,
3.0780650e-06, 2.3185400e-06, 1.9615050e-06, 1.5543100e-06, 1.1418950e-06,
8.8758000e-07, 6.3348700e-07, 4.6640450e-07, 3.7585400e-07, 3.1521850e-07,
2.0332100e-07, 1.3276700e-07, 1.0085360e-07, 9.9725150e-08, 4.8220850e-08,
3.5763850e-08, 3.1248650e-08, 1.5201200e-08, 1.5255050e-08, 1.4535665e-08,
1.0296500e-08, 3.3296350e-09, 4.2649500e-09, 2.4360850e-09, 1.9083020e-09,
3.4812650e-09, 1.1286305e-08, 1.1277880e-08, 2.8136000e-08, 2.4048150e-08,
6.0563950e-08, 8.8436450e-08, 8.4252600e-08, 1.1327950e-07, 1.8327300e-07,
2.3812750e-07, 3.4459350e-07, 4.6124100e-07, 5.5051400e-07, 7.4097250e-07,
8.7740250e-07, 1.1993100e-06, 1.5757100e-06, 2.0244200e-06, 2.4841700e-06,
2.9881900e-06, 3.8360900e-06, 4.9077300e-06, 5.7988000e-06, 6.9610050e-06,
8.8646500e-06, 1.1043280e-05, 1.3449500e-05, 1.6010100e-05, 1.9571400e-05,
2.1927400e-05, 2.3673950e-05, 2.3567350e-05, 2.3905600e-05, 2.3636600e-05,
2.3019850e-05, 2.2939400e-05, 2.3672850e-05, 2.5216700e-05, 2.8362850e-05,
3.2348000e-05, 3.5194500e-05, 3.8841250e-05, 3.9195200e-05, 4.0383200e-05,
3.8092400e-05, 3.5301550e-05, 3.1090550e-05, 2.6279800e-05, 2.0494250e-05,
1.7224750e-05, 1.3850350e-05, 1.0926300e-05, 8.4875350e-06, 6.7266700e-06,
5.2446700e-06, 4.1069050e-06, 3.2328750e-06, 2.4068150e-06, 1.5641550e-06,
1.2427700e-06, 9.3666100e-07, 7.4082350e-07, 5.2436800e-07
])
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.colors as colors
import matplotlib.ticker as ticker
def apply_circular_mask(np_array, radius=None):
if radius is None:
radius = np_array.shape[1] / 2
l = np_array.shape[0]
x = np.linspace(-l/2, l/2, l)
y = np.linspace(-l/2, l/2, l)
x, y = np.meshgrid(x, y)
mask = (x**2 + y**2) > radius**2
np_array[mask] = np.nan
return np_array, x, y
def draw_contour(np_array):
np_array, x, y = apply_circular_mask(np_array)
fig, ax = plt.subplots()
min_val, max_val = np.nanmin(np_array), np.nanmax(np_array)
levels = np.logspace(np.log10(min_val), np.log10(max_val), num=50)
contourf = ax.contourf(x, y, np_array, levels=levels, norm=colors.LogNorm(vmin=min_val, vmax=max_val), cmap='terrain', extend='both')
plt.colorbar(contourf, label='Elevation (m)', format=ticker.LogFormatterMathtext())
ax.set_xlim(x.min(), x.max())
ax.set_ylim(y.min(), y.max())
ax.set_xlabel('Eastwise Ground Distance (km)')
ax.set_ylabel('Northwise Ground Distance (km)')
ax.set_title('Contour Plot with Logarithmic Color Scale')
ax.set_aspect('equal', 'box')
plt.show()
np_array = sample_data
a = np_array.size
np_array = np_array * (10 ** (np.random.rand(a, a)))
draw_contour(np_array)
wich gives
Upvotes: 0