No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Colores y estilos

7/18
Recursos

Podemos personalizar mejor nuestros gráficos con diferentes colores y estilos, así, se entenderá mucho mejor nuestras gráficas.

Cómo agregar colores y estilos en Matplotlib

  • Estilos de gráficas que hay
print(plt.style.available)
---> Muestra los stilos que tiene matplot
  • Usar un estilo de grilla
plt.style.use('seaborn-whitegrid')
grilla.JPG

Personalizar colores y estilos en Matlab

fig, ax = plt.subplots(figsize = (6,6))
ax.plot(x,x+1, 'r--')
ax.plot(x,x+2, 'bo-')
ax.plot(x,x+3, 'g.:')
ax.plot(x,x+4, 'purple')
matplot.JPG

Personalizar colores y estilos en Pyplot

Para personalizar con pyplot es un poco más largo cuando programamos, pero se puede personalizar muchísimo más

  • Color
fig, ax = plt.subplots(figsize = (6,6))
ax.plot(x,x+1,color = '#D426C8') ---> Color RGB
ax.plot(x,x+2,color = '#66FF89')

ax.plot(x,x+3,color = 'blue') --> Color común
ax.plot(x,x+4, color = 'black')
pyplot.JPG
  • Transparencia (alpha) y grosor (linewidth)
fig, ax = plt.subplots(figsize = (6,6))
ax.plot(x,x+1,color = '#D426C8', alpha= 0.5, linewidth= 18)
ax.plot(x,x+2,color = '#66FF89', linewidth= 3)
ax.plot(x,x+3,color = 'blue', linewidth= 5)
ax.plot(x,x+4, color = 'black', alpha = 0.3, linewidth= 12)

transparencia y grozor.JPG
  • Estilo (linestyle) y marcadores (marker)
fig, ax = plt.subplots(figsize = (6,6))
ax.plot(x,x+3,color = 'blue', linestyle = 'dashed', marker = 'x')
ax.plot(x,x+4, color = 'black',linestyle = '--', marker = 'P')
estilo y marcadores.JPG
  • Tamaño de marcadores (markersize) y color (markerfacecolor)
fig, ax = plt.subplots(figsize = (6,6))
ax.plot(x,x+3,color = 'blue', linestyle = 'dashed', marker = '8', markersize = 10, markerfacecolor= "#37D842")

ax.plot(x,x+4, color = 'black',linestyle = '--', marker = 'P', markerfacecolor="#FF0000")
tamaño y color.JPG

Aportes 38

Preguntas 4

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

me obsesione

import numpy as np
import matplotlib.pyplot as plt

marco1=[0,4]
marco2=[0,4]
x2=[0,4]
y2=[2,2]
x3=[0,4]
y3=[0.4,0.4]
y35=[1.6,1.9]
y36=[2.6,2.9]
x4=np.linspace(0,4,10)
y4=[1,2,1,2,1,0,0,0,1,2]
x6=np.linspace(2.2,3,10)
y6=[0,0,0.2,0.2,0.2,0.5,0.5,0.5,1.1,1.1]
sol=[3,3.01]
sol2=[2,2]
pajaro1=[2.4,2.5,2.4,2.5,2.4]
pajaro2=[2.1,2.2,2.3,2.4,2.5]
pajaro3=[2.1,2.2,2.1,2.2,2.1]
pajaro4=[2.5,2.6,2.7,2.8,2.9]

fig, ax = plt.subplots(figsize = (3,3))

ax.plot(marco1,marco2)
ax.plot(x2,y2,"#C84504",linewidth=200)
ax.plot(x3,y36,"#DE6225",linewidth= 60)
ax.plot(x3,y35,"#EE783F",linewidth= 60)
ax.plot(x4,y4,"#3D1E17",linewidth=30)
ax.plot(x3,y3,"#078CA7",linewidth= 90)
ax.plot(sol,sol2,"#E2E2E2",linewidth=30)
ax.plot(pajaro2,pajaro1,"#000000",linewidth= 2)
ax.plot(pajaro4,pajaro3,"#000000",linewidth= 2)


ax.axes.get_xaxis().set_visible(False)
ax.axes.get_yaxis().set_visible(False)
plt.show()

Lo que hize un rato de iluminacion artistica.jsjsjsaj

La verdad es que Matplotlib es poderosísimo. Paso gráficos usando distintos estilos que encontré en la página de MATPLOTLIB
FUENTE 1: https://matplotlib.org/3.1.0/gallery/style_sheets/dark_background.html

import numpy as np
import matplotlib.pyplot as plt


plt.style.use('dark_background')

fig, ax = plt.subplots()

L = 6
x = np.linspace(0, L)
ncolors = len(plt.rcParams['axes.prop_cycle'])
shift = np.linspace(0, L, ncolors, endpoint=False)
for s in shift:
    ax.plot(x, np.sin(x + s), 'o-')
ax.set_xlabel('x-axis')
ax.set_ylabel('y-axis')
ax.set_title("'dark_background' style sheet")

plt.show()

FUENTE 2: https://matplotlib.org/3.5.0/users/prev_whats_new/dflt_style_changes.html

import matplotlib.pyplot as plt
import numpy as np

fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(6, 3))
fig.subplots_adjust(wspace=0.3)
th = np.linspace(0, 2*np.pi, 128)
N = 5

def demo(ax, extra_kwargs, title):
    ax.set_title(title)
    return [ax.fill_between(th, np.sin((j / N) * np.pi + th), alpha=.5, **extra_kwargs)
            for j in range(N)]

demo(ax1, {'facecolor': 'C0'}, 'classic')
demo(ax2, {}, 'v2.0')

FUENTE 3: https://matplotlib.org/matplotblog/posts/matplotlib-cyberpunk-style/

import pandas as pd
import matplotlib.pyplot as plt


plt.style.use("dark_background")

for param in ['text.color', 'axes.labelcolor', 'xtick.color', 'ytick.color']:
    plt.rcParams[param] = '0.9'  # very light grey

for param in ['figure.facecolor', 'axes.facecolor', 'savefig.facecolor']:
    plt.rcParams[param] = '#212946'  # bluish dark grey

colors = [
    '#08F7FE',  # teal/cyan
    '#FE53BB',  # pink
    '#F5D300',  # yellow
    '#00ff41',  # matrix green
]


df = pd.DataFrame({'A': [1, 3, 9, 5, 2, 1, 1],
                   'B': [4, 5, 5, 7, 9, 8, 6]})

fig, ax = plt.subplots()

df.plot(marker='o', color=colors, ax=ax)

# Redraw the data with low alpha and slighty increased linewidth:
n_shades = 10
diff_linewidth = 1.05
alpha_value = 0.3 / n_shades

for n in range(1, n_shades+1):

    df.plot(marker='o',
            linewidth=2+(diff_linewidth*n),
            alpha=alpha_value,
            legend=False,
            ax=ax,
            color=colors)

# Color the areas below the lines:
for column, color in zip(df, colors):
    ax.fill_between(x=df.index,
                    y1=df[column].values,
                    y2=[0] * len(df),
                    color=color,
                    alpha=0.1)

ax.grid(color='#2A3459')

ax.set_xlim([ax.get_xlim()[0] - 0.2, ax.get_xlim()[1] + 0.2])  # to not have the markers cut off
ax.set_ylim(0)

plt.show()

Arcoiris

fig, ax = plt.subplots(figsize = (3,3))

ax.plot(x,x+1,color = 'purple',linewidth= 20)
ax.plot(x,x+2, color = 'blue',linewidth= 20)
ax.plot(x,x+3,color = 'lightblue',linewidth= 20)
ax.plot(x,x+4, color = 'green',linewidth= 20)
ax.plot(x,x+5,color = 'yellow',linewidth= 20)
ax.plot(x,x+6, color = 'orange',linewidth= 20)
ax.plot(x,x+7,color = 'red',linewidth= 20)

ax.axes.get_xaxis().set_visible(False)
ax.axes.get_yaxis().set_visible(False)
plt.show()

Buen día mis estimados!

Pueden usar este código para poder visualizar los colores de forma mas bonita 😃.

# Lista de colores

import matplotlib.colors as mcolors
import matplotlib.patches as mpatch

overlap = {name for name in mcolors.CSS4_COLORS
           if f'xkcd:{name}' in mcolors.XKCD_COLORS}

fig = plt.figure(figsize=[9, 5])
ax = fig.add_axes([0, 0, 1, 1])

n_groups = 3
n_rows = len(overlap) // n_groups + 1

for j, color_name in enumerate(sorted(overlap)):
    css4 = mcolors.CSS4_COLORS[color_name]
    xkcd = mcolors.XKCD_COLORS[f'xkcd:{color_name}'].upper()

    # Pick text colour based on perceived luminance.
    rgba = mcolors.to_rgba_array([css4, xkcd])
    luma = 0.299 * rgba[:, 0] + 0.587 * rgba[:, 1] + 0.114 * rgba[:, 2]
    css4_text_color = 'k' if luma[0] > 0.5 else 'w'
    xkcd_text_color = 'k' if luma[1] > 0.5 else 'w'

    col_shift = (j // n_rows) * 3
    y_pos = j % n_rows
    text_args = dict(fontsize=10, weight='bold' if css4 == xkcd else None)
    ax.add_patch(mpatch.Rectangle((0 + col_shift, y_pos), 1, 1, color=css4))
    ax.add_patch(mpatch.Rectangle((1 + col_shift, y_pos), 1, 1, color=xkcd))
    ax.text(0.5 + col_shift, y_pos + .7, css4,
            color=css4_text_color, ha='center', **text_args)
    ax.text(1.5 + col_shift, y_pos + .7, xkcd,
            color=xkcd_text_color, ha='center', **text_args)
    ax.text(2 + col_shift, y_pos + .7, f'  {color_name}', **text_args)

for g in range(n_groups):
    ax.hlines(range(n_rows), 3*g, 3*g + 2.8, color='0.7', linewidth=1)
    ax.text(0.5 + 3*g, -0.3, 'X11/CSS4', ha='center')
    ax.text(1.5 + 3*g, -0.3, 'xkcd', ha='center')

ax.set_xlim(0, 3 * n_groups)
ax.set_ylim(n_rows, -1)
ax.axis('off')

plt.show()

Mi aporte

Una visualización que hice sobre varias funciones:

Es posible combinar método matlab y pyplot:

Estuve investigando un poco más sobre los estilos y noté que literalmente se puede personalizar todo.

Resultado:

  • Código:
fig, ax = plt.subplots(figsize = (6,6), facecolor= (.18, .31, .31)) # Parte externa
ax.set_facecolor('#eafff5') # Parte interna
ax.set_title('LINE', color= 'peachpuff')
ax.set_xlabel('x', color = 'c')
ax.set_ylabel('y', color = 'c')
ax.tick_params(labelcolor='orange') #Parámetros del gráfico

ax.plot(x,x,color = '#D426C8', alpha= 0.5, linewidth= 18)

ax.grid(True) #grilla

Fuente

👾🚀

Con este hack podrán ver todos los estilos aplicados y sus respectivos nombres arriba de cada gráfico.

for i in plt.style.available:
plt.style.use(i)
print(i)
fig, ax = plt.subplots(figsize=(5,5))
ax.plot(x)
plt.show()

![](https://static.platzi.com/media/user_upload/image-64251e31-2cc6-4f12-b020-cc798b70d524.jpg)`fig, ax = plt.subplots(ncols=2, nrows=1)ax[0].plot(x, x+1, 'r:', marker='v', markersize=8)` `ax[1].plot(x, np.sqrt(x), color='green', linestyle='dashed', marker='o')ax[1].plot(x, np.log10(x)+1, color='red', alpha=0.5, linewidth = 8, marker='D', markersize=8)` `fig.tight_layout()plt.show()`

Me encanto esta forma de asignar color y estilo a las graficas al momento de trabajar porque esta nos ayuda a complementar la diferencia de ejecucion de cada una.

Pequeño ejemplo ‘practico’:
Esta interesante lo de los set_xticks y los set_yticks. Les permiten decidir exactamente que parte del grafico quieren que se vea, se usa decicidendo que cordenadas iniciales y finales queremos en el eje y. Adema podemos escojer la cantidad de numeros que queremos que se vean entre los ejes.

.
.
Por ejemplo si quiero que se vea en el eje y desde el 1 hasta el 10, y que solo me muestre los pares, utiliazando numpy seria algo asi:

ax.set_xticks(np.arange(2, 11, 2))

Ahora si queiro que hacerlo manualmente seria algo asi:

ax.set_xticks([2,4,6,8,10])

.
.
Hice una grafica que muestra horas de estudio por dia

```python x = np.linspace(0,10,11) figure, ax = plt.subplots() for i in range(0,10): ax.plot(x,x*-((10-i)/(i+1))+(-i+10), "b", linestyle=":") ax.plot(x,x*((-i+10)/(i+1))+i, "r", linestyle=":") ax.plot(x,x*((i+1)/(10-i))-(i*(i+1)/(10-i)), "y",linestyle=":") ax.plot(x,x*(-((10-i)/(i+1)))+(((10-i)/(i+1)*10))+i, "g", linestyle=":") radius = 2 # Ajusta el radio según sea necesario ax.set_xlim(0, 10) ax.set_ylim(0, 10) ```Me tomó más de 7 horas. Tuve hasta que repasar temas de funciones de mi escuela.![](https://static.platzi.com/media/user_upload/image-ec3f780c-13ef-4f56-b11c-e48d66c4d5f4.jpg)
![](https://static.platzi.com/media/user_upload/image-b79f9229-546e-4329-9db8-b0d79a55d4f8.jpg)```python x = np.linspace(0,10,11) figure, ax = plt.subplots() for i in range(0,10): ax.plot(x,x*-((10-i)/(i+1))+(-i+10), "b", linestyle=":") ax.plot(x,x*((-i+10)/(i+1))+i, "r", linestyle=":") ax.plot(x,x*((i+1)/(10-i))-(i*(i+1)/(10-i)), "y",linestyle=":") ax.plot(x,x*(-((10-i)/(i+1)))+(((10-i)/(i+1)*10))+i, "g", linestyle=":") radius = 2 # Ajusta el radio según sea necesario ax.set_xlim(0, 10) ax.set_ylim(0, 10) ``` Me tomó más de 7 horas hacer esto... Tuve hasta que repasar temas de funciones de mi escuela.
![](https://static.platzi.com/media/user_upload/image-4ff7b55a-1772-4c92-a6a7-ee47a1c3641b.jpg) ```js fig, ax = plt.subplots(figsize=(10,6)) ax.set_title('Trigonometricos') ax.set_xlabel('$x$') ax.set_ylabel('$y$') ax.plot(x,(np.tan(x))/5,label='$tan(x)/5$', color=(0.8,0.1,0.7,0.4),linewidth=2, linestyle='dotted', marker='*', markersize=10, markerfacecolor='mediumseagreen') ax.plot(x,np.cos(x**2),label='$cos(x^2)$',color='#FAC205',linewidth=3, linestyle='dashdot', marker='d', markersize=6, markerfacecolor='#FF6347') ax.legend(bbox_to_anchor=(0.55,0.76), fontsize=12) plt.show() ```fig, ax = plt.subplots(figsize=(10,6)) ax.set\_title('Trigonometricos')ax.set\_xlabel('$x$')ax.set\_ylabel('$y$') ax.plot(x,(np.tan(x))/5,label='$tan(x)/5$', color=(0.8,0.1,0.7,0.4),linewidth=2, linestyle='dotted', marker='\*', markersize=10, markerfacecolor='mediumseagreen')ax.plot(x,np.cos(x\*\*2),label='$cos(x^2)$',color='#FAC205',linewidth=3, linestyle='dashdot', marker='d', markersize=6, markerfacecolor='#FF6347') ax.legend(bbox\_to\_anchor=(0.55,0.76), fontsize=12) plt.show()
Consulta. En la actualización de la versión de Platzi, se ha perdido los recursos de la clase. O dónde puedo ubicarlos. Gracias.

codigo para ver todos los estilos

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(-2, 20, .1)
y = .1 * x ** 3 - x ** 2 + 3 * x + 2


fig = plt.figure(dpi=100, figsize=(10, 25), tight_layout=True)
available = ['default'] + plt.style.available
for i, style in enumerate(available):
    with plt.style.context(style):
        ax = fig.add_subplot(10,3 , i + 1)
        ax.plot(x, y)
    ax.set_title(style)
fig.tight_layout()

Apuntes

Estilo Matlab

plt.style.use('dark_background')

fig, ax = plt.subplots(figsize = (8, 8))

ax.plot(x, x+1, 'r--')
ax.plot(x, x+2, 'b-')
ax.plot(x, x+3, 'y.-')
ax.plot(x, x+4, 'go:')

Pyplot

fig, ax = plt.subplots(figsize = (8, 8))

ax.plot(x, x+1, color='green', alpha=0.5, linewidth=5, linestyle='-', marker='o', markersize=20) #para agregar transparencia
ax.plot(x, x+2, color='blue', linewidth=8, linestyle='--', marker='o')
ax.plot(x, x+3, color='#66ff66', linewidth=3, linestyle='dashed', marker='')
ax.plot(x, x+4, color='#ccffcc', linewidth=2, linestyle=':', marker='P')

Aquí pueden ver todos los estilos!!

Los de la 2da fila que no tienen titulo son:
'dark_background', 'fast', 'fivethirtyeight', 'ggplot'

Mi aporte, un gráfico diferente jejejeje

7. Colores y estilos

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 5, 11)

print(plt.style.available)

## Matlab

fig, ax = plt.subplots(figsize=(8, 8))

plt.style.use('dark_background')
ax.plot(x,x+1,'r--')
ax.plot(x,x+2,'g-')
ax.plot(x,x+3,'b.-')
ax.plot(x,x+4,'yx')

##Pyplot

fig, ax = plt.subplots(figsize=(8, 8))

plt.style.use('dark_background')
ax.plot(x,x+1,color='blue', alpha=0.5, linewidth=10, linestyle=':',marker='o', markersize=20, markerfacecolor='yellow', markeredgewidth=3, markeredgecolor='green')
ax.plot(x,x+2,color='#8B008B', linewidth=10, linestyle='--')
ax.plot(x,x+3,color='#FF8C00', linewidth=5, linestyle='-.')
ax.plot(x,x+4,color='#FF1493', linestyle='dashdot')


Mi aporte, me tome mi tiempo para jugar con python.

Muy interesante todas las posibilidades de configuracion de los colores y estilos que se les puede dar a las graficas.

<fig, axes = plt.subplots(figsize=(6, 3.7))
axes.plot(x,x+1, label='circle', color = 'blue', alpha=0.8, linewidth=4,  linestyle='--', marker='8', markersize='10')
axes.plot(x,x+2, label='circle', color = 'blue', alpha=0.8, linewidth=4,  linestyle='--', marker='8', markersize='10')
axes.plot(x,x+3, label='hexagon', color = '#32CD32', alpha=0.8, linewidth=4, linestyle='dashed', marker='v', markersize='10')
axes.plot(x,x+4, label='cross',color = '#FF00FF', alpha=0.8, linewidth=4, linestyle=':', marker='P', markersize='10')
fig.legend();> 

para ver todos los tipos de graficas de un solo toque se puede utilizar este codigo:

x = np.linspace(0,5,11)
n = plt.style.available

for i in n:
    plt.style.use(i)
    plt.plot(x,x+1)
    plt.title(i)
    print(plt.show())
fig, ax = plt.subplots(figsize=(8,8))

ax.plot(x,x+1, color = 'green', alpha= 0.8, linewidth=5,linestyle ='-',marker='o',markersize= 10, markerfacecolor = '#CCFFCC') # alfha da transparencia a la lines
ax.plot(x,x+2,color = 'blue', linewidth=5,linestyle ='--',marker='8') #linewidth es el grosor de la linea
ax.plot(x,x+3,color = '#66ff66', linewidth=4,linestyle ='dashed',marker='v')
ax.plot(x,x+4,color = '#CCFFCC', linewidth=1,linestyle =':',marker='p')
ax.plot(x,x+5,color = 'YELLOW', linewidth=9,linestyle ='-',marker='d')

Si bien la opción de MATLAB nos permite aditar todo en un solo parámetro, la opción de Pyplot nos ayuda a tener código más legible y eso a final de cuentas es un muy buen punto a favor.

FUN FACT:

La letra F es la sexta letra del alfabeto español, por lo que en realidad el Charles lo que puso fue 666 666 en el RGB.

Información resumida de esta clase
#EstudiantesDePlatzi

  • Existen estilos predeterminados que puedo usar para estilizar mis gráficos

  • Puedo configurar los colores utilizando el hexadecimal del color

  • Puedo con el parámetro alpha modificar la transparencia

  • Con el parámetro linewidth puedo modificar el grosor de la línea

  • Puedo modificar el estilo de la línea utilizando el parámetro linestyle

  • Puedo crear un marcador y también modificar el tamaño y color de este marcador

  • Puedo hacer de todo

¿alguien ya vio “RWBY”?

<fig, ax = plt.subplots(figsize=(8,8))
x = np.linspace(1,10)
plt.style.use('seaborn-dark')
ax.plot(x, x+3, c='r')
ax.plot(x, x+2, c='w')
ax.plot(x, x+1, c='b')
ax.plot(x, x,   c='y')> 

Ejercicio de la clase

Mi ejercicio de la clase:

Ejercicios en clase:

****nos de la clase ****

Colores y estilos
Podemos personalizar mejor nuestros gráficos con diferentes colores y estilos, así, se entenderá mucho mejor nuestras gráficas.
Cómo agregar colores y estilos en Matplotlib Estilos de gráficas que hay
________________________________________
[2]
0 s
import matplotlib.pyplot as plt
import numpy as np
________________________________________
[3]
0 s
x = np.linspace(0,12,26)
________________________________________
[4]
0 s
print(plt.style.available)
['Solarize_Light2', '_classic_test_patch', 'bmh', 'classic', 'dark_background', 'fast', 'fivethirtyeight', 'ggplot', 'grayscale', 'seaborn', 'seaborn-bright', 'seaborn-colorblind', 'seaborn-dark', 'seaborn-dark-palette', 'seaborn-darkgrid', 'seaborn-deep', 'seaborn-muted', 'seaborn-notebook', 'seaborn-paper', 'seaborn-pastel', 'seaborn-poster', 'seaborn-talk', 'seaborn-ticks', 'seaborn-white', 'seaborn-whitegrid', 'tableau-colorblind10']
________________________________________
[28]
0 s
plt.style.use('dark_background')
#con esta función puedo cambiar el estilo de mis graficas 
________________________________________
Matlab
modificaciones de tipo Matlab
________________________________________
[26]
fig, ax = plt.subplots(figsize=(10,10))

ax.plot(x,x+1,"g--")
ax.plot(x,x+2,"r-->")
ax.plot(x,x+3,"y.-")
ax.plot(x,x+4,"bo:")
#con Matlab, puedo custumizar las líneas de mi grafica  
________________________________________
Pyplot
modificaciones con pyplot
________________________________________
[42]
0 s
fig, ax = plt.subplots(figsize=(10,10))

ax.plot(x,x+1,color = "green",alpha=0.2, linewidth=5, linestyle="-", marker="o", markersize=10, markerfacecolor="#CCFFCC")
ax.plot(x,x+2,color = "blue",linewidth=10, linestyle="--", marker="x", markersize=9, markerfacecolor="y")
ax.plot(x,x+3,color = "#66FF66", linewidth=6, linestyle="dashed", marker="v", markersize=8.5, markerfacecolor="g")
ax.plot(x,x+4,color = "#CCFFCC", linewidth=4, linestyle=":", marker="p", markersize=9, markerfacecolor="r")
#aca tambien estamos cambiando el color de las lineas de rgb. algo especial aca es que 
#podemos configurar el alfa 
#con la funcion (alpha)podemos tener cierto nivel de transparencia en mis lineas 
#con la funcion (linewidth) puedo trabajar el grosor de las lineas 
#con la funcion (linestyle) puedo cambiar el estilo de mis lineas segun los parametros
#cin la funcion (marker), agregamos marcadores a nuestros graficos  
#tambien podemos cambiar el color al marker
________________________________________
en esta clase vimos como configurar diferentes estilos y tipos de líneas, colores y son muchas las configuraciones que podemos tener