Цвета и оси перепутаны в colorplot с использованием matplotlib - PullRequest
0 голосов
/ 23 декабря 2019

Я новичок в Python, и моя цель - использовать его в основном для построения графиков, так как я студент MSc. У меня есть файлы в формате, описанном ниже, и я пытаюсь сделать правильную Colormesh из этого:

0 0 1 2 3 4 5 6
-3 1 1 1 1 1 1 1
-2 1 1 1 1 1 1 1 
-1 7 7 4 4 4 6 6
0 7 7 4 4 4 6 6
1 7 7 4 4 4 6 6
2 3 3 3 3 3 3 3
3 3 3 3 3 3 3 3

[0 1 2 3 4 5 6] первой строки - значения для оси Y графика, а [-3 -2 -1 0 1 2 3] в первом столбце приведены значения для значений x того же графика. Первый 0 только для пробелов.

Итак, я сохранил эти значения в переменных:

data = [[ 0.  0.  1.  2.  3.  4.  5.  6.]
        [-3.  1.  1.  1.  1.  1.  1.  1.]
        [-2.  1.  1.  1.  1.  1.  1.  1.]
        [-1.  7.  7.  4.  4.  4.  6.  6.]
        [ 0.  7.  7.  4.  4.  4.  6.  6.]
        [ 1.  7.  7.  4.  4.  4.  6.  6.]
        [ 2.  3.  3.  3.  3.  3.  3.  3.]
        [ 3.  3.  3.  3.  3.  3.  3.  3.]]

x = [-3 -2 -1 0 1 2 3]

y = [0 1 2 3 4 5 6] 

z =  [[1. 1. 1. 1. 1. 1. 1.]
      [1. 1. 1. 1. 1. 1. 1.]
      [7. 7. 4. 4. 4. 6. 6.]
      [7. 7. 4. 4. 4. 6. 6.]
      [7. 7. 4. 4. 4. 6. 6.]
      [3. 3. 3. 3. 3. 3. 3.]
      [3. 3. 3. 3. 3. 3. 3.]]

и z - это числа, которые я действительно хочу построить.

Вот мой код:

import matplotlib.pyplot as plt
from matplotlib.colors import BoundaryNorm, ListedColormap
from matplotlib.ticker import MaxNLocator
import numpy as np
# ------------- Input Data Files ------------- # 

data = np.loadtxt('my_colormesh_data0.dat')  # Load Data File

# ------ Transform Data into 2D Matrix ------- # 

x = data[1:,0]
y = data[0,1:]
z = data[1:,1:]  # Take colormesh values and store into matrix   

# ============ Plot Commands =================== #

colormap = ListedColormap(['#404040', '#FFEE00', '#00DC00', '#FF8000', '#9900FF', '#000000', '#FF0000']) 

fig, ax = plt.subplots()

im = ax.pcolormesh(x, y, z, cmap = colormap, vmin = z.min(), vmax=colormap.N)

fig.colorbar(im, ax=ax)

plt.xlabel('x')
plt.ylabel('y')

plt.tight_layout()
plt.show()

, и этот цветовой график является результатом кода выше:

enter image description here

Однако этоэто не нужный результат, так как цвета перепутаны.

Чтобы проиллюстрировать мою цель, вот картинка, обобщающая проблему:

Code Output

Не понимаю, почему цвета и оси перепутаны при выводе кода, что я делаю не так?

Заранее спасибо!

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