Горизонтальные и вертикальные цветные полосы на одном графике в PythonPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Горизонтальные и вертикальные цветные полосы на одном графике в Python

Сообщение Anonymous »

У меня есть график KDE, созданный с помощью seaborn, на который я накладываю несколько разрозненных точек определенного размера. Мне нужно иметь две цветные полосы для представления данных KDE и размера разбросанных значений (как показано ниже).
Я пытался использовать ответ, представленный здесь, в Stackoverflow, однако это не так. получение желаемых результатов, как показано на снимке экрана ниже
Изображение

Вопрос: Как я могу исправить и горизонтальную цветовую полосу, чтобы между цветовой полосой и основным графиком был некоторый вертикальный зазор? Кроме того, длина горизонтальной полосы слишком велика и должна быть равна ширине основного графика.
MWE:
import matplotlib.pyplot as plt
from mpl_toolkits import axes_grid1
import seaborn as sns
import numpy as np

def add_colorbar(im, aspect=20, pad_fraction=0.5, orientation='vertical', **kwargs):
"""Add a color bar to an image plot with an option for horizontal or vertical colorbars."""
divider = axes_grid1.make_axes_locatable(im.axes)

if orientation == 'horizontal':
width = axes_grid1.axes_size.AxesX(im.axes, aspect=1./aspect) # Horizontal colorbar
pad = axes_grid1.axes_size.Fraction(pad_fraction, width)
cax = divider.append_axes("bottom", size=width, pad=pad) # Place at the bottom
else:
width = axes_grid1.axes_size.AxesY(im.axes, aspect=1./aspect) # Default vertical colorbar
pad = axes_grid1.axes_size.Fraction(pad_fraction, width)
cax = divider.append_axes("right", size=width, pad=pad) # Place at the right

return im.axes.figure.colorbar(im, cax=cax, orientation=orientation, **kwargs)

# Dummy data
x_values = np.random.rand(100)
y_values = np.random.rand(100)
size_values = np.random.rand(100)
kd = np.random.rand(100, 2)
kde_params_x = np.mean(kd[:, 0])
kde_params_y = np.mean(kd[:, 1])

# Create a plot
fig, ax = plt.subplots(figsize=(8, 8))

# Plot the multidimensional KDE for the winning data
kde = sns.kdeplot(x=kd[:, 0], y=kd[:, 1], fill=True, cmap='crest', bw_adjust=0.5, alpha=0.7, ax=ax)

# colorbar for the KDE plot
add_colorbar(kde.collections[0], orientation='horizontal') # orientation to 'horizontal'

# Overlay the empirical scatter plot with contrasting colors
scatter = ax.scatter(x_values, y_values, s=2, c=size_values, cmap='plasma', alpha=0.8, edgecolor='black', linewidth=0.5, label='Empirical Data')

# Add a colorbar for the scatter plot (vertical, as before)
add_colorbar(scatter, orientation='vertical') # vertical orientation

plt.show()


Подробнее здесь: https://stackoverflow.com/questions/792 ... -in-python
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»