Как я могу нарисовать точки с нормализованным цветом в matplotlib? - PullRequest
0 голосов
/ 09 мая 2019

У меня есть следующий код:

x = range(1, 100) # pixel x coordinates
y = range(21, 120) # pixel y coordinates
z = [-2, 5, 1, ..., 1] # should be mapped to colors

import matplotlib.pyplot as plt
import matplotlib.cm as cm
from matplotlib.colors import Normalize

cmap = cm.autumn
norm = Normalize(vmin=min(z), vmax=max(z))
colormap = cmap(norm(5))
plt.plot(x, y, cm=colormap)

А теперь я хочу построить эти точки [x, y] так, чтобы:

  1. Каждая точка должна быть пикселем (поскольку len(x) может составлять около 35'000), а не просто маркером (боюсь, они будут перекрываться в других случаях).
  2. Используя этот вопрос , я бы хотел взять карту цветов и сопоставить min(z), скажем, белый цвет, а max(z) - черный (и отобразить легенду).

Как я могу сделать это с помощью matplotlib?

1 Ответ

0 голосов
/ 09 мая 2019

Поскольку вы говорите о пикселях вместо маркеров, и я не знаю, получили ли вы данные для всех координат пикселей или только для некоторых, я покажу вам кое-что для обоих.Я включу пакет numpy, потому что он упрощает работу с массивами.

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm
from matplotlib.colors import Normalize

x = range(1, 100) # pixel x coordinates
y = range(21, 120) # pixel y coordinates

Предполагая, что у вас есть z-данные для всех координат, охватываемых [x, y]:

In [1]: z = np.random.rand(len(x), len(y)) # should be mapped to colors
plt.imshow(z)
plt.colorbar()
Out [1]:

enter image description here

Предполагая каждыйЗначение z отображается на пару координат [x, y], но охватываются не все координаты:

In [2]:
z = np.random.rand(len(x))

arr = np.zeros([max(x) + 1, max(y) + 1])
arr[x, y] = z

plt.imshow(arr)
plt.colorbar()

Out [2]:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...