Фиксация раскрашивает диаграммы рассеяния в matplotlib

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

Ни за что в жизни я, может казаться, не выясняю все различные способы зафиксировать цветовой диапазон. Я попробовал vmin, vmax, но это, кажется, ничего не делает, я также попробовал clim (x, y), и это, кажется, не работает также.

Это должно подойти тут и там, я не могу быть единственным, который хочет сравнить различные подмножества данных среди графиков... так, как Вы фиксируете цвета так, чтобы каждые данные сохранили, это - цвет между графиками и не становится повторно отображенным на другом цвете из-за изменения в макс. / минута подмножества-v-полный набор?

26
задан Serenity 26 July 2016 в 04:18
поделиться

2 ответа

Это должно происходить при установке vmin и vmax.

Вот пример:

import matplotlib.pyplot as plt

xyc = range(20)

plt.subplot(121)
plt.scatter(xyc[:13], xyc[:13], c=xyc[:13], s=35, vmin=0, vmax=20)
plt.colorbar()
plt.xlim(0, 20)
plt.ylim(0, 20)

plt.subplot(122)
plt.scatter(xyc[8:20], xyc[8:20], c=xyc[8:20], s=35, vmin=0, vmax=20)   
plt.colorbar()
plt.xlim(0, 20)
plt.ylim(0, 20)

plt.show()

И полученный график:

alt text

45
ответ дан 28 November 2019 в 07:16
поделиться

Хорошо, на самом деле это не ответ, а продолжение. Результаты моего кодирования, изменяющего приведенный выше код Тома. [не уверен, что хочу убрать галочку с ответом, так как приведенный выше код работает и является ответом на вопрос!]

Похоже, это не работает с моими данными !! Ниже приведен модифицированный код, который можно использовать с моими данными для создания графика, который не работал у меня по какой-то странной причине. Ввод был получен с помощью функций h5py (импорт файла данных hdf5).

Ниже RF85 - это подмножество массивов для большой серии экспериментов, в которых ВЧ-мощность, подаваемая на систему, составляла примерно 85 Вт вперед. Я в основном разрезаю данные различными способами, чтобы попытаться увидеть тенденцию.Это 85 Вт по сравнению с полным набором данных, который является текущим вводом (данных больше, но это то, что у меня есть на данный момент).

import numpy
import matplotlib.pyplot as plt

CurrentsArray = [array([ 0.83333333,  0.8       ,  0.57142857,  0.83333333,  1.03333333,
        0.25      ,  0.81666667,  0.35714286,  0.26      ,  0.57142857,
        0.83333333,  0.47368421,  0.80645161,  0.47368421,  0.52631579,
        0.36666667,  0.47368421,  0.57142857,  0.47368421,  0.47368421,
        0.47368421,  0.47368421,  0.47368421,  0.61764706,  0.81081081,
        0.41666667,  0.47368421,  0.47368421,  0.45      ,  0.73333333,
        0.8       ,  0.8       ,  0.8       ,  0.47368421,  0.45      ,
        0.47368421,  0.83333333,  0.47368421,  0.22222222,  0.32894737,
        0.57142857,  0.83333333,  0.83333333,  1.        ,  1.        ,
        0.46666667])]

growthTarray = [array([ 705.,  620.,  705.,  725.,  712.,  705.,  680.,  680.,  620.,
        660.,  660.,  740.,  721.,  730.,  720.,  720.,  730.,  705.,
        690.,  705.,  680.,  715.,  705.,  670.,  705.,  705.,  650.,
        725.,  725.,  650.,  650.,  650.,  714.,  740.,  710.,  717.,
        737.,  740.,  660.,  705.,  725.,  650.,  710.,  703.,  700.,  650.])]

CuSearray = [array([ 0.46395015,  0.30287259,  0.43496888,  0.46931773,  0.47685844,
        0.44894925,  0.50727844,  0.45076198,  0.44977095,  0.41455029,
        0.38089693,  0.98174953,  0.48600461,  0.65466528,  0.40563053,
        0.22990327,  0.54372179,  0.43143358,  0.92515847,  0.73701742,
        0.64152173,  0.52708783,  0.51794063,  0.49      ,  0.48878252,
        0.45119732,  0.2190089 ,  0.43470776,  0.43509758,  0.52697697,
        0.21576805,  0.32913721,  0.48828072,  0.62201997,  0.71442359,
        0.55454867,  0.50981136,  0.48212956,  0.46      ,  0.45732419,
        0.43402525,  0.40290777,  0.38594786,  0.36777306,  0.36517926,
        0.29880924])]

PFarray = [array([ 384.,  285.,  280.,  274.,  185.,  185.,  184.,  184.,  184.,
        184.,  184.,  181.,  110.,  100.,  100.,  100.,   85.,   85.,
         84.,   84.,   84.,   84.,   84.,   84.,   84.,   84.,   84.,
         84.,   84.,   84.,   84.,   84.,   27.,   20.,    5.,    5.,
          1.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.])]

rf85growthTarray = [array([ 730.,  705.,  690.,  705.,  680.,  715.,  705.,  670.,  705.,
        705.,  650.,  725.,  725.,  650.,  650.,  650.])]

rf85CuSearray = [array([ 0.54372179,  0.43143358,  0.92515847,  0.73701742,  0.64152173,
        0.52708783,  0.51794063,  0.49      ,  0.48878252,  0.45119732,
        0.2190089 ,  0.43470776,  0.43509758,  0.52697697,  0.21576805,
        0.32913721])]

rf85PFarray = [array([ 85.,  85.,  84.,  84.,  84.,  84.,  84.,  84.,  84.,  84.,  84.,
        84.,  84.,  84.,  84.,  84.])]

rf85CurrentsArray = [array([ 0.54372179,  0.43143358,  0.92515847,  0.73701742,  0.64152173,
        0.52708783,  0.51794063,  0.49      ,  0.48878252,  0.45119732,
        0.2190089 ,  0.43470776,  0.43509758,  0.52697697,  0.21576805,
        0.32913721])]

Datavmax = max(max(CurrentsArray))
Datavmin = min(min(CurrentsArray))

plt.subplot(121)
plt.scatter(growthTarray, CuSearray, PFarray, CurrentsArray, vmin=Datavmin, vmax=Datavmax, alpha=0.75)
plt.colorbar()
plt.xlim(600,760)
plt.ylim(0,2.5)

plt.subplot(122)
plt.scatter(rf85growthTarray, rf85CuSearray, rf85PFarray, rf85CurrentsArray, vmin=Datavmin, vmax=Datavmax, alpha=0.75)
plt.colorbar()
plt.xlim(600,760)
plt.ylim(0,2.5)

plt.show()

И, наконец, результат:

colorfailed!

Обратите внимание, что это не идеальный результат для моей работы, но я не приложил усилий, чтобы сделать его идеальным. Однако важно то, что точки данных, которые вы узнаете как одинаковые между графиками , не содержат того же цвета , который должен быть в случае использования vmin vmax выше (как предлагает код Тома).

Это безумие. :( Я действительно надеюсь, что кто-нибудь сможет пролить свет на это для меня! Я уверен, что мой код не так уж хорош, поэтому, пожалуйста, не беспокойтесь о том, чтобы в любом случае обидеть мой код !!

Дополнительная сумка огненного - горячие чито всем, кто может предложить путь вперед. -Allen

ОБНОВЛЕНИЕ- Tom10 обнаружил проблему - Я случайно использовал неправильные данные для одного из моих подмассивов, в результате чего значения имели разные уровни цвета, чем ожидалось (т.е. мои данные были неправильными!) За это спасибо Тому - я хотел бы дать ему еще один голос, но из-за моего метода постановки этого вопроса я не могу (прости, Том!)

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

Вот обновленное изображение, показывающее, что метод Тома действительно работает и что построение графика было проблемой в моем собственном коде: alt text

0
ответ дан 28 November 2019 в 07:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: