Найти - Пользователи
Полная версия: Графическое представление данных, colorbar
Начало » Центр помощи » Графическое представление данных, colorbar
1 2
MarinaAl
Ребят, если можно, помогите тупенькому биологу. Я правда, не студент, но задача простая, вроде.
Есть измеренные экспериментально значения в определенных точках на участке озера Байкал. По сути, все участки располагались по ровной такой сетке, но значения есть далеко не в каждом пересечении х и у и с нерегулярным шагом. Очень хотелось бы сделать что-то вроде графика с изолиниями по данным значениям, где бы как на географической карте было видно распределение данных на плоскости. Ну т.е. синий цвет - наименьшие значения, красный - наибольшее и среднее между ними. Но как это сделать, если у меня нет значений всего массива, а только отдельные точки с конкретными коордиатами 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
Почему-то не скопировались квадратные скобки и цифры в них…
py.user.next
MarinaAl
Почему-то не скопировались квадратные скобки
Используй теги code для кода
[code python][/code]
MarinaAl
 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()
py.user.next
Теперь добавь туда все импорты, чтобы мы могли код скопировать к себе и запустить.
MarinaAl
 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()
py.user.next
MarinaAl
Как же мне сделать график, чтобы были промежуточные средние значения между точками?
Попробуй вычислить средние значения между точками с помощью линейной интерполяции.
wiki. пример интерполяции
MarinaAl
Спасибо, попробую
vic57
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()
py.user.next
Можно и без интерполяции вычислить средние значения (может, это просто измерения, тогда функции нет для интерполяции). Например, у тебя между точками две точки незаполненные - то есть три промежутка между известными точками. Тогда нужно найти длину промежутка и прибавлять её или отнимать в зависимости от увеличения или уменьшения значения от одной точки к другой.

Вот пример
   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
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB