oss2024hnu / coursegraph-py

BSD 2-Clause "Simplified" License
5 stars 71 forks source link

show_graph 학기 최상단 학년 구분 노드 작동코드를 손봐야할거같습니다. #472

Open Wonsoox opened 3 weeks ago

Wonsoox commented 3 weeks ago
# 학년 노드 추가
    non_empty_positions = [max(y_values) for y_values in adjusted_pos.values() if y_values]
    max_y = max(non_empty_positions) if non_empty_positions else 0

    for grade in range(1, 5):
        G.add_node(f"{grade}학년", pos=(grade, max_y - 0.1))

    pos = nx.get_node_attributes(G, 'pos')

    for grade in range(1, 5):
        x, y = pos[f"{grade}학년"]
        bbox_props = dict(boxstyle=f"round,pad=0.5", ec='black', lw=2, facecolor='white')
        plt.text(x, y, f"{grade}학년", fontsize=18, ha='center', va='center', fontweight='bold', bbox=bbox_props)

    # 학기 노드 추가
    max_x = max([x for x, y in pos.values()]) - 3.85
    min_y = min([y for x, y in pos.values()])
    max_y = max([y for x, y in pos.values()])
    y_range = max_y - min_y
    semester_positions = [min_y + y_range * 0.33, min_y + y_range * 0.85]

    for semester in range(1, 3):
        G.add_node(f"{semester}학기", pos=(max_x, semester_positions[semester - 1]))

    pos = nx.get_node_attributes(G, 'pos')

    for semester in range(1, 3):
        x, y = pos[f"{semester}학기"]
        bbox_props = dict(boxstyle=f"round,pad=0.5", ec='black', lw=2, facecolor='white')
        plt.text(x, y, f"{semester}학기", fontsize=18, ha='center', va='center', fontweight='bold', bbox=bbox_props)

현재 학기최상단 노드를 구현하는 코드입니다. 기존의 구현 내용을 개조하여 넣었습니다. 하지만 너무 길고 복잡합니다. 학기 최상단에 위치하는 학년 노드들은 저렇게 구현하지 않아도 됩니다. 이것을 개선해야합니다.

Wonsoox commented 3 weeks ago

실제로 연산을 거친 좌표 연산과정은 외부환경요인에 따라 노드가 밀리는 결과를 초래합니다. 그래서, 외부요인에 따라 동적으로 변하지 않는 요인들은 연산으로 좌표를 지정하면안됩니다.