Rafael Nadal's matches¶
Nota: Si deseas ejecutar este ejemplo en Google Colab, primero debes ejecutar la siguiente celda para instalar las librerías necesarias:
!pip install ipyvizzu pandas
In [1]:
Copied!
#!pip install ipyvizzu pandas
#!pip install ipyvizzu pandas
In [2]:
Copied!
import pandas as pd
from ipyvizzu import Chart, Data, Config, Style, DisplayTarget
# Cargamos los datos desde un archivo CSV en un DataFrame
df = pd.read_csv(
"https://ipyvizzu.vizzuhq.com/0.16/showcases/nadal/nadal.csv",
dtype={ # Especificamos tipos de datos para ciertas columnas
"Year": str,
"Round": str,
"Round2": str,
"Order_GS": str,
"Order_all": str,
"Total_GS": str,
"Top": str,
},
)
data = Data() # Creamos un objeto Data para manejar los datos
data.add_df(df) # Agregamos el DataFrame al objeto Data
# Crear un objeto Chart con el ancho y el alto deseados
chart = Chart(width="640px", height="360px",display=DisplayTarget.END)
chart.animate(data) # Animamos la gráfica utilizando los datos
# Configuración y estilo inicial para la visualización
chart.animate(
data.filter("record.Year != 'Total'"), # Filtramos registros que no son "Total"
Config(
{
"x": "Year",
"y": "Round2",
"color": {
"set": "Result_Num",
"range": {"min": -1, "max": 1},
},
"size": None,
"orientation": "horizontal",
"geometry": "rectangle",
"title": "Partidos de Rafael Nadal en Roland Garros",
"legend": "size",
}
),
Style(
{
"title": {
"paddingTop": 50,
"paddingBottom": 0,
},
"plot": {
"marker": {
"borderWidth": 3,
"borderOpacity": 0,
"colorPalette": "#1EB55FFF #AD0000FF #AEAEAEFF",
"colorGradient": "#AEAEAEFF 0.000000, #AD0000FF 0.500000, #1EB55FFF 1.000000",
},
"paddingLeft": 20,
"paddingBottom": "3.5em",
"paddingTop": "2.5em",
"xAxis": {"interlacing": {"color": "#ffffff00"}},
"yAxis": {"label": {"fontSize": "120%"}},
},
"logo": {"width": 100},
}
),
)
# Más animaciones y configuraciones
chart.animate(
Config({"lightness": "Won", "title": "Ganó 112 de 116 (96.5%)"}),
Style({"plot": {"marker": {"maxLightness": 0, "minLightness": 0.8}}}),
delay=4,
)
chart.animate(
Config({"lightness": "Lost", "title": "Perdió 3 veces, se retiró una vez"}),
delay=4,
)
chart.animate(
Config({"lightness": None, "title": ""}),
Style({"plot": {"marker": {"maxLightness": None, "minLightness": None}}}),
delay=4,
)
chart.animate(
Config({"lightness": "3SetWin", "title": "90 victorias (80%) en sets corridos"}),
Style({"plot": {"marker": {"maxLightness": 0, "minLightness": 0.8}}}),
)
# Más animaciones y configuraciones
chart.animate(
Config({"lightness": "Straightwin", "title": "Ganó 4 títulos sin perder sets"}),
delay=3,
)
chart.animate(
Config({"lightness": None, "title": ""}),
Style({"plot": {"marker": {"maxLightness": None, "minLightness": None}}}),
delay=4,
)
chart.animate(
Config(
{"lightness": "Novak", "title": "Jugó más veces contra Djokovic - 10 partidos"}
),
Style({"plot": {"marker": {"maxLightness": 0, "minLightness": 0.8}}}),
)
# Más animaciones y configuraciones
chart.animate(
Config(
{"lightness": "Roger", "title": "Segundo en esta lista es Federer - con 6 encuentros"}
),
delay=4,
)
chart.animate(
Config({"lightness": "Final", "title": "Rafa ganó sus 14 finales"}),
delay=4,
)
# Más animaciones y configuraciones
chart.animate(
data.filter("record.Year != 'Total' && record.Round == 'F'"), # Filtramos por año y ronda 'F'
Config(
{
"y": {"set": "Round2", "range": {"max": 1, "min": -5}},
"x": "Count",
"lightness": None,
"noop": "Year",
"label": None,
"title": "",
}
),
Style(
{
"plot": {
"marker": {
"borderWidth": 0,
"colorPalette": "#C6652A #CDA02E #47B0FF #329564 #5C88F2 #91A9B5 #DBC4B1",
"maxLightness": None,
"minLightness": None,
"label": {
"position": "center",
"format": "dimensionsFirst",
},
},
"xAxis": {
"title": {"color": "#ffffff00"},
"label": {"color": "#ffffff00"},
"interlacing": {"color": "#ffffff00"},
},
"yAxis": {
"title": {"color": "#ffffff00"},
"label": {"color": "#ffffff00", "fontSize": None},
},
}
}
),
delay=3,
)
# Más animaciones y configuraciones
chart.animate(
data.filter(
"""
record.Year == "Total" &&
record.Tournament == "Roland Garros" &&
record.Player == "Nadal"
"""
), # Filtramos registros específicos
Config(
{
"noop": ["Level", "Round2"],
"label": ["Player", "Tournament", "Count"],
"y": {"set": ["Player", "Tournament"]},
}
),
duration=0,
)
# Más animaciones y configuraciones
chart.animate(Config({"noop": "Level"}), duration=0)
# Más animaciones y configuraciones
chart.animate(
data.filter(
"record.Year == 'Total' && record.Round == 'GS' && record.Top == '1'"
), # Filtramos registros específicos
Config(
{
"y": {
"set": ["Player", "Tournament", "Level"],
"range":
{"max": None, "min": None},
},
"title": "Rafa ganó el mismo título de Grand Slam varias veces",
"color": "Level",
"legend": "color",
"noop": None,
"sort": "byValue",
}
),
)
# Más animaciones y configuraciones
chart.animate(
data.filter('record.Year == "Total" && record.Top == "1"'), # Filtramos registros específicos
Config(
{
"y": {
"set": ["Player", "Tournament", "Level"],
"range": {"max": 19, "min": 7},
},
"x": ["Count"],
"title": "Ganando el mismo título ATP - Rafa es 1ro, 2do, 3ro y 4to!",
}
),
delay=5,
)
# Más animaciones y configuraciones
chart.animate(
data.filter('record.Year == "Total" && record.Round == "GS" && record.Top == "1"'), # Filtramos registros específicos
Config(
{
"y": {
"set": ["Player", "Tournament", "Level"],
"range": {"max": None, "min": None},
},
"x": ["Count"],
"title": "",
"color": "Level",
}
),
delay=5,
)
# Más animaciones y configuraciones
chart.animate(Config({"x": ["Count", "Total_GS"], "label": "Player"}))
# Más animaciones y configuraciones
chart.animate(
data.filter('record.Year == "Total" && record.Round == "GS"'), # Filtramos registros específicos
Config(
{
"y": {
"set": ["Player"],
"range": {"max": None, "min": None},
},
"x": ["Count", "Tournament", "Level", "Total_GS"],
"title": "Rafa también lidera en el número total de Grand Slams ganados",
}
),
)
# Más animaciones y configuraciones
chart.animate(
Config({"label": ["Total_GS"]}),
Style(
{
"plot": {
"marker": {
"label": {
"position": "right",
"filter": "color(#666666FF)",
}
}
}
}
),
)
import pandas as pd
from ipyvizzu import Chart, Data, Config, Style, DisplayTarget
# Cargamos los datos desde un archivo CSV en un DataFrame
df = pd.read_csv(
"https://ipyvizzu.vizzuhq.com/0.16/showcases/nadal/nadal.csv",
dtype={ # Especificamos tipos de datos para ciertas columnas
"Year": str,
"Round": str,
"Round2": str,
"Order_GS": str,
"Order_all": str,
"Total_GS": str,
"Top": str,
},
)
data = Data() # Creamos un objeto Data para manejar los datos
data.add_df(df) # Agregamos el DataFrame al objeto Data
# Crear un objeto Chart con el ancho y el alto deseados
chart = Chart(width="640px", height="360px",display=DisplayTarget.END)
chart.animate(data) # Animamos la gráfica utilizando los datos
# Configuración y estilo inicial para la visualización
chart.animate(
data.filter("record.Year != 'Total'"), # Filtramos registros que no son "Total"
Config(
{
"x": "Year",
"y": "Round2",
"color": {
"set": "Result_Num",
"range": {"min": -1, "max": 1},
},
"size": None,
"orientation": "horizontal",
"geometry": "rectangle",
"title": "Partidos de Rafael Nadal en Roland Garros",
"legend": "size",
}
),
Style(
{
"title": {
"paddingTop": 50,
"paddingBottom": 0,
},
"plot": {
"marker": {
"borderWidth": 3,
"borderOpacity": 0,
"colorPalette": "#1EB55FFF #AD0000FF #AEAEAEFF",
"colorGradient": "#AEAEAEFF 0.000000, #AD0000FF 0.500000, #1EB55FFF 1.000000",
},
"paddingLeft": 20,
"paddingBottom": "3.5em",
"paddingTop": "2.5em",
"xAxis": {"interlacing": {"color": "#ffffff00"}},
"yAxis": {"label": {"fontSize": "120%"}},
},
"logo": {"width": 100},
}
),
)
# Más animaciones y configuraciones
chart.animate(
Config({"lightness": "Won", "title": "Ganó 112 de 116 (96.5%)"}),
Style({"plot": {"marker": {"maxLightness": 0, "minLightness": 0.8}}}),
delay=4,
)
chart.animate(
Config({"lightness": "Lost", "title": "Perdió 3 veces, se retiró una vez"}),
delay=4,
)
chart.animate(
Config({"lightness": None, "title": ""}),
Style({"plot": {"marker": {"maxLightness": None, "minLightness": None}}}),
delay=4,
)
chart.animate(
Config({"lightness": "3SetWin", "title": "90 victorias (80%) en sets corridos"}),
Style({"plot": {"marker": {"maxLightness": 0, "minLightness": 0.8}}}),
)
# Más animaciones y configuraciones
chart.animate(
Config({"lightness": "Straightwin", "title": "Ganó 4 títulos sin perder sets"}),
delay=3,
)
chart.animate(
Config({"lightness": None, "title": ""}),
Style({"plot": {"marker": {"maxLightness": None, "minLightness": None}}}),
delay=4,
)
chart.animate(
Config(
{"lightness": "Novak", "title": "Jugó más veces contra Djokovic - 10 partidos"}
),
Style({"plot": {"marker": {"maxLightness": 0, "minLightness": 0.8}}}),
)
# Más animaciones y configuraciones
chart.animate(
Config(
{"lightness": "Roger", "title": "Segundo en esta lista es Federer - con 6 encuentros"}
),
delay=4,
)
chart.animate(
Config({"lightness": "Final", "title": "Rafa ganó sus 14 finales"}),
delay=4,
)
# Más animaciones y configuraciones
chart.animate(
data.filter("record.Year != 'Total' && record.Round == 'F'"), # Filtramos por año y ronda 'F'
Config(
{
"y": {"set": "Round2", "range": {"max": 1, "min": -5}},
"x": "Count",
"lightness": None,
"noop": "Year",
"label": None,
"title": "",
}
),
Style(
{
"plot": {
"marker": {
"borderWidth": 0,
"colorPalette": "#C6652A #CDA02E #47B0FF #329564 #5C88F2 #91A9B5 #DBC4B1",
"maxLightness": None,
"minLightness": None,
"label": {
"position": "center",
"format": "dimensionsFirst",
},
},
"xAxis": {
"title": {"color": "#ffffff00"},
"label": {"color": "#ffffff00"},
"interlacing": {"color": "#ffffff00"},
},
"yAxis": {
"title": {"color": "#ffffff00"},
"label": {"color": "#ffffff00", "fontSize": None},
},
}
}
),
delay=3,
)
# Más animaciones y configuraciones
chart.animate(
data.filter(
"""
record.Year == "Total" &&
record.Tournament == "Roland Garros" &&
record.Player == "Nadal"
"""
), # Filtramos registros específicos
Config(
{
"noop": ["Level", "Round2"],
"label": ["Player", "Tournament", "Count"],
"y": {"set": ["Player", "Tournament"]},
}
),
duration=0,
)
# Más animaciones y configuraciones
chart.animate(Config({"noop": "Level"}), duration=0)
# Más animaciones y configuraciones
chart.animate(
data.filter(
"record.Year == 'Total' && record.Round == 'GS' && record.Top == '1'"
), # Filtramos registros específicos
Config(
{
"y": {
"set": ["Player", "Tournament", "Level"],
"range":
{"max": None, "min": None},
},
"title": "Rafa ganó el mismo título de Grand Slam varias veces",
"color": "Level",
"legend": "color",
"noop": None,
"sort": "byValue",
}
),
)
# Más animaciones y configuraciones
chart.animate(
data.filter('record.Year == "Total" && record.Top == "1"'), # Filtramos registros específicos
Config(
{
"y": {
"set": ["Player", "Tournament", "Level"],
"range": {"max": 19, "min": 7},
},
"x": ["Count"],
"title": "Ganando el mismo título ATP - Rafa es 1ro, 2do, 3ro y 4to!",
}
),
delay=5,
)
# Más animaciones y configuraciones
chart.animate(
data.filter('record.Year == "Total" && record.Round == "GS" && record.Top == "1"'), # Filtramos registros específicos
Config(
{
"y": {
"set": ["Player", "Tournament", "Level"],
"range": {"max": None, "min": None},
},
"x": ["Count"],
"title": "",
"color": "Level",
}
),
delay=5,
)
# Más animaciones y configuraciones
chart.animate(Config({"x": ["Count", "Total_GS"], "label": "Player"}))
# Más animaciones y configuraciones
chart.animate(
data.filter('record.Year == "Total" && record.Round == "GS"'), # Filtramos registros específicos
Config(
{
"y": {
"set": ["Player"],
"range": {"max": None, "min": None},
},
"x": ["Count", "Tournament", "Level", "Total_GS"],
"title": "Rafa también lidera en el número total de Grand Slams ganados",
}
),
)
# Más animaciones y configuraciones
chart.animate(
Config({"label": ["Total_GS"]}),
Style(
{
"plot": {
"marker": {
"label": {
"position": "right",
"filter": "color(#666666FF)",
}
}
}
}
),
)