#python #matplotlib
#python #matplotlib
Вопрос:
В следующем коде у меня есть три столбца E, W и KL, каждый из которых имеет размер 1300. Я хочу использовать значения KL в качестве цветовой полосы, а E и W — в качестве осей x и y соответственно. С разбросанным графиком . Я хочу, чтобы они отображались как точки слияния, показывающие плавный график, но я не знаю, какая функция в matplotlib подходит для этой цели?
import numpy as np
import matplotlib
matplotlib.use("A&&")
import matplotlib.pyplot as plt
import ar&parse
import math
import os
from matplotlib import cm
fi& = plt.fi&ure(fi&size=(8,6))
ax = fi&.add_subplot(111)
data=np.loadtxt("./dos_bins60_distribution_bins60")
print(data[:,0].shape)
cm = plt.cm.&et_cmap('BuGn')
E=data[:,0]
W=data[:,1]
KL=data[:,2]
print(KL.shape)
im=data[:,0:2]
print("im shape: ",im.shape)
sc = plt.scatter(E, W, c=KL, vmin=0, vmax=1, cmap=cm)
plt.colorbar(sc)
plt.savefi&("./Phase")`
введите описание изображения здесь
![введите описание изображения здесь][2]
Комментарии:
1.
plt.tricontourf(E, W, KL, levels=np.linspace(0,1,100), cmap=cm)
2. Да, plt.tricontourf точно генерирует ожидаемый результат. Остается только одна проблема: эта команда рисует линию на границах, которые я хочу исключить из графика. Могу ли я это сделать?
3. Может быть, линия границы берется из данных? Это трудно увидеть без данных или изображения.
4. У меня есть еще одна путаница. С помощью команды tricontourf я хочу определить цвета в соответствии с массивом KL, содержащим 1300 значений. Даже если я использую levels= np.linspace (0,1,100), цвет, соответствующий максимальному значению, т. Е. 1, темно-синий, который не виден на графике. Я хочу сказать, что значения colorbar и фактический рисунок отличаются. Моя репутация меньше 10, поэтому я не могу прикрепить график.
5. Что, если я хочу использовать команду plt.imshow, но эта функция требует Z, которая определяется в терминах x и y. Как мне выбрать эту функцию?