Для фрейма данных Pandas я пытаюсь использовать Seaborn для создания FacetGrid на основе одного столбца ('year'), а затем создать точечную диаграмму для каждого субплота, где оси x и y соответствуют столбцам 'x' и'y', а цвет соответствует еще одному значению 'p'. Я также хочу добавить значащую цветовую полосу в качестве аннотации к графику. Используя мой код ниже, где data
- это кадр данных Pandas,
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# 'data' imported from a csv file
data.head()
x y q t p year
0 0.864721 0.080396 0.970694 0.848008 2.164305 1
1 0.615352 0.768370 0.950874 2.902603 2.383057 3
2 0.775110 0.562287 1.163768 0.151289 4.026925 1
3 0.355569 0.161638 0.840118 3.075967 0.431773 4
4 0.405850 0.807168 1.261452 0.242770 1.111010 1
g = sns.FacetGrid(data, col='year', hue='p', palette='seismic')
g = g.map(plt.scatter, 'x', 'y', s=100, alpha=0.5)
plt.colorbar()
Я могусоздайте это как показано ниже. ![enter image description here](https://i.stack.imgur.com/nbRZ0.png)
Так что я могу получить фазовую сетку с графиками рассеяния. Проблема в том, что моя цветовая шкала с правой стороны не выровнена (в терминах значений и цветовой палитры) с кругами на точечных диаграммах. Истинные значения для 'p' находятся в диапазоне от 0,15 до 8,2;значения для цветовой карты варьируются от 0 до 1. Кроме того, палитра цветов, кажется, отличается между графиками и цветовой картой. Таким образом, правильная цветовая карта будет варьироваться от темно-синего до темно-красного для диапазона от 0,15 до 8,2.
Я подозреваю, что создаваемая мной цветовая карта не "связана" с точечными диаграммами. Вместо этого pyplot просто создает общую цветовую карту с палитрой по умолчанию и диапазоном при отсутствии каких-либо данных для использования.
Как мне заставить это работать?