2013-04-04 4 views
0

Вот код:matplotlib imshow как рисовать точки вместо изображения?

plots=imshow(Z,extent=extent,origin,cmap=cmap,aspect='auto',vmin=vmin,vmax=vmax) 
plots.plot(Response,component,vrange) 

Это участки изображения на основе списка данных Z, как я могу позволить точек это печать данных вместо изображения?

Похоже, необходимо изменить на разброс (x, y, ...) для построения точек данных, насколько сложно изменить массив Z на x, y?

ответ

0
import pylab 
pylab.figure(1) 
pylab.plot([1,2,3,4],[1,7,3,5]) # draw on figure one 
pylab.show() # show figure on screen 
1

Вы не предоставили много информации для продолжения, но похоже, что вы действительно хотите создать диаграмму рассеяния.

Есть много вариантов здесь в зависимости от того, что вы черчения и то, что вы хотите увидеть, но я нашел следующее полезным:

Fixing color in scatter plots in matplotlib

+0

Z представляет собой массив как этот г [[1,09415996 1,43587005 0,89219701 ..., -1,00144994 0,14369801 1,18596005] [1,09415996 1,43587005 0,89219701 ..., -1,00144994 0,14369801 1,18596005]]. Могу ли я создать график рассеяния с помощью imshow()? – truelies

5

Как @ jdj081 сказал, вы хотите, чтобы произвести разброс сюжет.

import os.path 

import matplotlib 
import matplotlib.pyplot as plt 
import numpy as np 

# get an image from the sample data directory 
fname = os.path.join(matplotlib.get_data_path(), 'sample_data', 'lena.png') 
im = plt.imread(fname) 

# Reduce the data by a factor of 4 (so that we can see the points) 
im = im[::4, ::4] 

# generate coordinates for the image. Note that the image is "top down", so the y coordinate goes from high to low. 
ys, xs = np.mgrid[im.shape[0]:0:-1, 0:im.shape[1]] 

# Scatter plots take 1d arrays of xs and ys, and the colour takes a 2d array, 
# with the second dimension being RGB 
plt.scatter(xs.flatten(), ys.flatten(), s=4, 
      c=im.flatten().reshape(-1, 3), edgecolor='face') 
plt.show() 

scatter plot of lena

+0

Да. Я хочу разброс точек. Z включает в себя данные, как эта г [[1,09415996 1,43587005 0,89219701 ..., -1,00144994 0,14369801 1,18596005 ] [1,09415996 1,43587005 0,89219701 ..., -1,00144994 0,14369801 1,18596005 ] ..., [-0,2372447 0,69860512 0,04342676 ... , -0.08253406 -0.51178968 -0.35968387] [-0.27594933 0.54936659 0.32261935 ..., -0.13794966 -0.53104192 -0.35142872]] После ввода imshow (z, ...), это оказывается изображение, не отличающееся точки. Включает ли это imshow() интерполяцию данных в изображение? – truelies

+0

Да. См. Http://matplotlib.org/users/image_tutorial.html (для схем интерполяции: http://matplotlib.org/users/image_tutorial.html#array-interpolation-schemes) – pelson

+0

Любой пример, как изменить массив Z в массив x, y, поэтому я могу использовать его в разбросе()? Спасибо – truelies

Смежные вопросы