DIPO / my_utils /plot.py
xinjie.wang
init commit
c28dddb
# import os, sys
# sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..'))
# import matplotlib
# matplotlib.use('Agg')
# import numpy as np
# import networkx as nx
# from io import BytesIO
# from PIL import Image, ImageDraw
# from matplotlib import pyplot as plt
# from sklearn.decomposition import PCA
# from my_utils.refs import graph_color_ref
# def add_text(text, imgarr):
# '''
# Function to add text to image
# Args:
# - text (str): text to add
# - imgarr (np.array): image array
# Returns:
# - img (np.array): image array with text
# '''
# img = Image.fromarray(imgarr)
# I = ImageDraw.Draw(img)
# I.text((10, 10), text, fill='black')
# return np.asarray(img)
# def get_color(ref, n_nodes):
# '''
# Function to color the nodes
# Args:
# - ref (list): list of color reference
# - n_nodes (int): number of nodes
# Returns:
# - colors (list): list of colors
# '''
# N = len(ref)
# colors = []
# for i in range(n_nodes):
# colors.append(np.array([[int(i) for i in ref[i%N][4:-1].split(',')]]) / 255.)
# return colors
# def make_grid(images, cols=5):
# """
# Arrange list of images into a N x cols grid.
# Args:
# - images (list): List of Numpy arrays representing the images.
# - cols (int): Number of columns for the grid.
# Returns:
# - grid (numpy array): Numpy array representing the image grid.
# """
# # Determine the dimensions of each image
# img_h, img_w, _ = images[0].shape
# rows = len(images) // cols
# # Initialize a blank canvas
# grid = np.zeros((rows * img_h, cols * img_w, 3), dtype=images[0].dtype)
# # Place each image onto the grid
# for idx, img in enumerate(images):
# y = (idx // cols) * img_h
# x = (idx % cols) * img_w
# grid[y: y + img_h, x: x + img_w] = img
# return grid
# def viz_graph(info_dict, res=256):
# '''
# Function to plot the directed graph
# Args:
# - info_dict (dict): output json containing the graph information
# - res (int): resolution of the image
# Returns:
# - img_arr (np.array): image array
# '''
# # build tree
# tree = info_dict['diffuse_tree']
# edges = []
# for node in tree:
# edges += [(node['id'], child) for child in node['children']]
# G = nx.DiGraph()
# G.add_edges_from(edges)
# # plot tree
# plt.figure(figsize=(res/100, res/100))
# colors = get_color(graph_color_ref, len(tree))
# pos = nx.nx_agraph.graphviz_layout(G, prog="twopi", args="")
# node_order = sorted(G.nodes())
# nx.draw(G, pos, node_color=colors, nodelist=node_order, edge_color='k', with_labels=False)
# buf = BytesIO()
# plt.savefig(buf, format="png", dpi=100)
# buf.seek(0)
# img = Image.open(buf)
# img_arr = np.asarray(img)
# buf.close()
# plt.clf()
# plt.close()
# return img_arr[:, :, :3]
# def viz_patch_feat_pca(feat):
# pca = PCA(n_components=3)
# pca.fit(feat)
# feat_pca = pca.transform(feat)
# t = np.array(feat_pca)
# t_min = t.min(axis=0, keepdims=True)
# t_max = t.max(axis=0, keepdims=True)
# normalized_t = (t - t_min) / (t_max - t_min)
# array = (normalized_t * 255).astype(np.uint8)
# img_array = array.reshape(16, 16, 3)
# return img_array