Skip to content

Instantly share code, notes, and snippets.

@robintux
Last active December 4, 2025 02:25
Show Gist options
  • Select an option

  • Save robintux/a1c6f250c73ff0d5d1f6ab689e681799 to your computer and use it in GitHub Desktop.

Select an option

Save robintux/a1c6f250c73ff0d5d1f6ab689e681799 to your computer and use it in GitHub Desktop.
import plotly.express as px
import pandas as pd
import numpy as np
# Definir función de visualización
def visualize_palette_colors(palette_name='YlGnBu', show_values=True):
"""
Visualiza todos los colores de una paleta secuencial
Parameters:
-----------
palette_name : str
Nombre de la paleta (ej: 'YlGnBu', 'Viridis', 'Plasma')
show_values : bool
Si True, muestra los valores hexadecimales
"""
# Acceder a la paleta
try:
palette = getattr(px.colors.sequential, palette_name)
except AttributeError:
print(f"⚠️ Paleta '{palette_name}' no encontrada.")
available = [p for p in dir(px.colors.sequential) if not p.startswith('_')]
print(f"Paletas disponibles: {available[:10]}...")
return None
n_colors = len(palette)
# Crear DataFrame para visualización
df = pd.DataFrame({
'Color_Index': range(n_colors),
'Hex_Color': palette,
'Position': np.linspace(0, 1, n_colors)
})
# Crear visualización
fig = px.bar(
df,
y=[1] * n_colors, # Altura constante
x=df['Color_Index'],
color=df['Color_Index'],
color_continuous_scale=palette,
title=f'<b>Paleta: {palette_name}</b><br><span style="font-size:12px">Número de colores: {n_colors}</span>',
labels={'x': 'Índice del Color', 'y': ''},
text=df['Hex_Color'] if show_values else None
)
# Personalizar
fig.update_traces(
textposition='outside',
textfont=dict(size=10, color='black'),
hovertemplate=(
f'<b>Paleta: {palette_name}</b><br>'
'Índice: %{x}<br>'
'Color: %{text}<br>'
'Posición: %{customdata[0]:.3f}<extra></extra>'
),
customdata=df[['Position']],
width=1.0 # Barras sin espacio
)
fig.update_layout(
xaxis=dict(
title='Índice del Color',
tickmode='array',
tickvals=list(range(n_colors)),
ticktext=[f'{i}' for i in range(n_colors)]
),
yaxis=dict(showticklabels=False, showgrid=False),
coloraxis_showscale=False,
showlegend=False,
plot_bgcolor='white',
height=300,
width=max(800, n_colors * 30) # Ajustar ancho según número de colores
)
# Añadir información adicional
fig.add_annotation(
x=0.02, y=1.08,
xref='paper', yref='paper',
text=f'<b>Primer color:</b> {palette[0]}<br><b>Último color:</b> {palette[-1]}',
showarrow=False,
align='left',
bgcolor='rgba(255, 255, 255, 0.8)',
bordercolor='lightgray',
borderwidth=1
)
return fig
# paletas : dir(px.colors.sequential)
# Visualizar YlGnBu
fig = visualize_palette_colors('YlGnBu', show_values=True)
fig.show()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment