시각화 + 3d

import pandas as pd

with open('col_10k.txt', 'r', encoding='utf-8') as file:
    data=file.readlines()
data[:2]
col_nums=list(map(lambda line : line[:-3].split(","),data))
col_nums=list(map(lambda line : list(map(lambda x : int(x), line)),col_nums))
col_nums[:2]
[[2, 1], [3, 10, 5, 16, 8, 4, 2, 1]]
col_nums=col_nums[:1000]
from math import sin,cos,pi
def nums_to_point(num):
    x_points=[0]
    y_points=[0]
    z_points=[0]
    dir=pi
    for index,n in enumerate(num,1):
        if n%2==0:
            dir+=pi/12
            x_points.append(x_points[index-1]+sin(dir))
            y_points.append(y_points[index-1]+cos(dir))
        else:
            dir-=pi/12
            x_points.append(x_points[index-1]+sin(dir))
            y_points.append(y_points[index-1]+cos(dir))
        z_points.append(z_points[index-1]+0.8)
    return x_points,y_points,z_points
points=[]
for line in col_nums:
    points.append(nums_to_point(line))
import matplotlib.pyplot as plt
import matplotlib.cm as cm
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
plt.clf()
fig = plt.figure(figsize=(7,13))
ax = fig.add_subplot(111, projection="3d")
ax.set_xlim(-50, 10)   # X축 범위
ax.set_ylim(-30, 40)   # Y축 범위
ax.set_zlim(0, 110) #Z
xlim = ax.get_xlim3d()
ylim = ax.get_ylim3d()
zlim = ax.get_zlim3d()
ax.set_xlabel("X Axis")
ax.set_ylabel("Y Axis")
ax.set_zlabel("Z Axis")
ax.set_box_aspect([xlim[1]-xlim[0], ylim[1]-ylim[0], zlim[1]-zlim[0]])
for num in points:
    color=cm.tab10(np.random.randint(0, 10))
    ax.plot(num[0],num[1],num[2],color=color,alpha=0.5,lw=0.8)
plt.savefig("graph/3d_1k.svg")
plt.savefig("graph/3d_1k.png")
plt.show()
<Figure size 640x480 with 0 Axes>

3d 로 그려봤다. 2d 에서 곡선 그릴때에서 z 축을 추가했다. z 축은, 계산 횟수에 따라서 1씩 올라간다. 그래서 z축80 언저리에 있는 애들은 80번째에 1으로 간 거다.

Last updated

Was this helpful?