\documentclass[margin=0.5cm]{standalone} \usepackage{tikz} \usepackage{pyluatex} \usepackage{pgf} \begin{document} \begin{python} # %% import io import numpy as np import matplotlib.pyplot as plt from sklearn.cluster import KMeans # %% data = """g1,10 g2,12 g3,9 g4,15 g5,17 g6,18""" points =[int(row.split(",")[1]) for row in data.split("\n")] X = np.array([[point] for point in points]) initial_means = [[10], [9]] points # %% kmeans_values = [] for i in range(1,4): kmeans = KMeans(n_clusters=2, random_state=42, max_iter=i, init=initial_means, n_init=1) kmeans.fit(X) kmeans_values.append(kmeans.cluster_centers_) # %% fig, axs = plt.subplots(len(kmeans_values), 1, sharex=True) for i, centroids in enumerate(kmeans_values): ax = axs[i] ax.scatter(centroids, [i]*len(centroids), marker='x') ax.scatter(points, [i]*len(points), s=2, color="black") ax.axis('off') with io.StringIO() as file: fig.savefig(file, format="pgf", bbox_inches="tight", pad_inches=0.1) print(file.getvalue()) \end{python} \begin{tikzpicture} \end{tikzpicture} \end{document}