Tree map

Visualize

Tree map

Un treemap es un diagrama que puede utilizarse para visualizar datos numéricos con categorías jerárquicas. Un ejemplo típico es un mapa de calor del Nikkei 225 o del S&P 500. Este cuaderno utiliza squarify.

A treemap can also be created by using plotly.( Treemap charts with Python - Plotly

import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib
import squarify

np.random.seed(0)  # Fix random numbers

labels = ["A" * i for i in range(1, 5)]
sizes = [i * 10 for i in range(1, 5)]
colors = ["#%02x%02x%02x" % (i * 50, 0, 0) for i in range(1, 5)]

plt.figure(figsize=(5, 5))
squarify.plot(sizes, color=colors, label=labels)
plt.axis("off")
plt.show()

Tree map (figura)

Visualizar mi cartera #

Supongamos que tengo datos sobre el precio de adquisición y el precio actual de cada acción que poseo. A partir de ahí, crearía un mapa de calor como finviz.

Supongamos que leemos los siguientes datos del csv.

※Los datos mostrados aquí son ficticios.

import pandas as pd

data = [
    ["PBR", 80.20, 130.00],
    ["GOOG", 1188.0, 1588.0],
    ["FLNG", 70.90, 230.00],
    ["ZIM", 400.22, 630.10],
    ["GOGL", 120.20, 90.90],
    ["3466\nラサールロジ", 156.20, 147.00],  # 日本語表示のテスト用
]

df = pd.DataFrame(data)
df.columns = ["銘柄名", "取得価額", "現在の価額"]
df["評価損益"] = df["現在の価額"] - df["取得価額"]
df.head(6)

plt.show()

銘柄名取得価額現在の価額評価損益
0PBR80.20130.049.80
1GOOG1188.001588.0400.00
2FLNG70.90230.0159.10
3ZIM400.22630.1229.88
4GOGL120.2090.9-29.30
53466\nラサールロジ156.20147.0-9.20

Especifique el color del mapa de árbol #

Verde para las zonas rentables y rojo para las zonas con pérdidas.

colors = []
percents = []
for p_or_l, oac in zip(df["評価損益"], df["取得価額"]):
    percent = p_or_l / oac * 100

    if p_or_l > 0:
        g = np.min([percent * 255 / 100 + 100, 255.0])
        color = "#%02x%02x%02x" % (0, int(g), 0)
        colors.append(color)
    else:
        r = np.min([-percent * 255 / 100 + 100, 255])
        color = "#%02x%02x%02x" % (int(r), 0, 0)
        colors.append(color)

    percents.append(percent)

print(df["銘柄名"].values)
print(colors)
print(percents)

plt.show()
['PBR' 'GOOG' 'FLNG' 'ZIM' 'GOGL' '3466\nラサールロジ']
['#00ff00', '#00b900', '#00ff00', '#00f600', '#a20000', '#730000']
[62.094763092269325, 33.670033670033675, 224.4005641748942, 57.43840887511868, -24.376039933444257, -5.8898847631241935]

Visualización de un mapa de árbol #

Vamos a mostrar las ganancias/pérdidas en colores y el porcentaje de ganancias/pérdidas en el treemap. Los caracteres japoneses no se confunden porque se utiliza import japanize_matplotlib al principio.

current_prices = [cp for cp in df["現在の価額"]]
labels = [
    f"{name}\n{np.round(percent, 2)}%".replace("-", "▼")
    for name, percent in zip(df["銘柄名"], percents)
]

plt.figure(figsize=(10, 10))
plt.rcParams["font.size"] = 18
squarify.plot(current_prices, color=colors, label=labels)
plt.axis("off")
plt.show()

Los caracteres japoneses no se confunden porque se utiliza i… (figura)

Añadir la visualización de la caché al treemap #

Añadamos también una visualización de la caché al treemap. El color debe ser gris.

plt.figure(figsize=(10, 10))
plt.rcParams["font.size"] = 18
squarify.plot(
    current_prices + [3500], color=colors + ["#ccc"], label=labels + ["キャッシュ"]
)
plt.axis("off")
plt.show()

El color debe ser gris (figura)