시각화 + 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?