Форум сайта python.su
Ребят, если можно, помогите тупенькому биологу. Я правда, не студент, но задача простая, вроде.
Есть измеренные экспериментально значения в определенных точках на участке озера Байкал. По сути, все участки располагались по ровной такой сетке, но значения есть далеко не в каждом пересечении х и у и с нерегулярным шагом. Очень хотелось бы сделать что-то вроде графика с изолиниями по данным значениям, где бы как на географической карте было видно распределение данных на плоскости. Ну т.е. синий цвет - наименьшие значения, красный - наибольшее и среднее между ними. Но как это сделать, если у меня нет значений всего массива, а только отдельные точки с конкретными коордиатами x,y? Я пробовала просто создавать массив из нулей и смотреть на его фоне значения, но это не то.
n = 15
m = 28
a = * n
for i in range(n):
a = * m
a=0.012727
a=0.016722
a=0.015608
a=0.014746
a=0.019719
a=0.016737
и т.д. и т.п.
cf = plt.contourf(a)
plt.colorbar(cf)
plt.show()
Как же мне сделать график, чтобы были промежуточные средние значения между точками?
Офлайн
Почему-то не скопировались квадратные скобки и цифры в них…
Офлайн
MarinaAlИспользуй теги code для кода
Почему-то не скопировались квадратные скобки
[code python][/code]
Отредактировано py.user.next (Апрель 10, 2017 12:36:22)
Офлайн
n = 15 m = 28 a = (0.005) * n for i in range(n): a[i] = [0.005] * m a[0][21]=0.012727 a[0][23]=0.016722 a[0][25]=0.015608 a[0][27]=0.014746 a[2][9]=0.019719 a[2][13]=0.016737 и т.д. и т.п. cf = plt.contourf(a) plt.colorbar(cf) plt.show()
Офлайн
Теперь добавь туда все импорты, чтобы мы могли код скопировать к себе и запустить.
Офлайн
from pylab import * n = 15 m = 28 a = [0.005] * n for i in range(n): a[i] = [0.005] * m a[0][21]=0.012727 a[0][23]=0.016722 a[0][25]=0.015608 a[0][27]=0.014746 a[2][9]=0.019719 a[2][13]=0.016737 a[2][15]=0.016018 a[2][17]=0.022554 a[2][19]=0.014739 a[2][21]=0.019553 a[2][23]=0.05725 a[2][25]=0.013447 a[4][11]=0.014754 a[4][13]=0.018152 a[4][15]=0.016378 a[4][17]=0.010915 a[4][19]=0.018119 a[4][23]=0.014982 a[4][25]=0.015974 a[5][8]=0.023388 a[6][4]=0.020342 a[6][9]=0.023512 a[6][11]=0.018492 a[6][13]=0.021086 a[6][15]=0.015404 a[6][17]=0.021727 a[6][21]=0.018598 a[6][23]=0.017478 a[6][25]=0.017101 a[7][2]=0.019343 a[7][8]=0.019677 a[8][4]=0.026008 a[8][11]=0.021748 a[8][13]=0.015974 a[8][15]=0.015287 a[8][17]=0.05725 a[8][19]=0.01694 a[8][21]=0.020645 a[8][23]=0.018244 a[8][25]=0.020645 a[8][27]=0.022803 a[9][2]=0.018895 a[9][7]=0.032905 a[11][0]=0.015533 a[11][2]=0.017408 a[11][4]=0.017619 a[11][7]=0.017183 a[11][11]=0.016064 a[11][15]=0.018346 a[11][21]=0.01819 a[11][27]=0.016835 a[13][2]=0.014346 a[14][0]=0.009836 a[14][7]=0.016465 a[14][15]=0.015795 a[14][21]=0.015433 a[14][27]=0.017543 cf = plt.contourf(a) plt.colorbar(cf) plt.show()
Офлайн
MarinaAlПопробуй вычислить средние значения между точками с помощью линейной интерполяции.
Как же мне сделать график, чтобы были промежуточные средние значения между точками?
Офлайн
Спасибо, попробую
Офлайн
MarinaAlзадавайте явно
х и у и с нерегулярным шагом.
import matplotlib.pyplot as plt import matplotlib.tri as tri from random import random,randint x = [randint(0,100) for _ in range(100)] y = [randint(0,100) for _ in range(100)] z = [random() for _ in xrange(100)] triang = tri.Triangulation(x, y) plt.tricontour(triang, z,20) plt.colorbar() plt.show()
Отредактировано vic57 (Апрель 11, 2017 18:39:10)
Офлайн
Можно и без интерполяции вычислить средние значения (может, это просто измерения, тогда функции нет для интерполяции). Например, у тебя между точками две точки незаполненные - то есть три промежутка между известными точками. Тогда нужно найти длину промежутка и прибавлять её или отнимать в зависимости от увеличения или уменьшения значения от одной точки к другой.
Вот пример
x1 x2 x3 x4 x5 x6 x7
0.012727 ? ? 0.016722 ? ? 0.015608
x1x4mean = abs(x1 - x4) / 3 = 0.0013316667
Так как x1 < x4, мы прибавляем среднее значение к x1.
x2 = x1 + x1x4mean = 0.012727 + 0.0013316667 = 0.0140586667
x3 = x2 + x1x4mean = 0.0140586667 + 0.0013316667 = 0.0153903334
x1 x2 x3 x4 x5 x6 x7
0.012727 0.01406 0.01539 0.016722 ? ? 0.015608
x4x7mean = abs(x4 - x7) / 3 = 0.0003713333
Так как x4 > x7, мы отнимаем среднее значение от x4.
x5 = x4 - x4x7mean = 0.016722 - 0.0003713333 = 0.0163506667
x6 = x5 - x4x7mean = 0.0163506667 - 0.0003713333 = 0.0159793334
x1 x2 x3 x4 x5 x6 x7
0.012727 0.01406 0.01539 0.016722 0.01635 0.01598 0.015608
Отредактировано py.user.next (Апрель 12, 2017 03:13:28)
Офлайн