Last active
December 4, 2025 02:25
-
-
Save robintux/a1c6f250c73ff0d5d1f6ab689e681799 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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