홈>
예를 들어 설명하겠습니다. Plotly 사용자 안내서의 첫 번째 그림 인 여기 에 표시된 간단한 선 그림을 살펴 보겠습니다.
from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot
import plotly.graph_objs as go
trace1 = go.Scatter(x=[1,2,3], y=[4,5,6], marker={'color': 'red', 'symbol': 104, 'size': 10},
mode="markers+lines", text=["one","two","three"], name='1st Trace')
data=go.Data([trace1])
layout=go.Layout(title="First Plot", xaxis={'title':'x1'}, yaxis={'title':'x2'})
figure1=go.Figure(data=data,layout=layout)
init_notebook_mode(connected=True)
iplot(figure1)
이제 x-tick 레이블을
'A', 'B', 'C'
로 업데이트하고 싶습니다
ytick 라벨을
'E', 'F', 'G'
로
. 그림을 다음과 같이 업데이트하면됩니다 :
figure1['data'][0]['x']=['A', 'B', 'C']
figure1['data'][0]['y']=['E', 'F', 'G']
iplot(figure1)
지금까지 너무 좋아. 그러나 먼저 matplotlib를 사용하여 그림을 그린 다음 다음과 같이 플롯으로 변환한다고 가정 해 보겠습니다.
import matplotlib.pyplot as plt
import plotly.tools as tls
plt.plot([1,2,3], [4,5,6], 'r+-', markersize=10)
plt.xlabel('x2')
plt.ylabel('y2')
mpl_fig = plt.gcf()
figure2 = tls.mpl_to_plotly(mpl_fig)
init_notebook_mode(connected=True)
iplot(figure2)
이것은 그림을 그리는 데 사용하는 라이브러리가 matplotlib에서만 작동하도록 설계되었거나 최대로 seaborn 일 때 적합합니다. 그러나 플롯을 동적/대화식으로 만들고 플롯으로 사용하려고합니다.
이번에는 이전과 똑같은 방식으로 그림을 업데이트하려고하면 빈 그림이 나타납니다!
figure2['data'][0]['x']=['A', 'B', 'C']
figure2['data'][0]['y']=['E', 'F', 'G']
iplot(figure2)
빈 그림 일뿐만 아니라 xtick 레이블과 ytick 레이블도 변경되지 않습니다.
figure1['data'][0]['x']
에 포함 된 내용을 자세히 살펴보면
, 나는 그것의 튜플을 본다 :
그리고
figure2['data'][0]['x']
에 포함 된 내용을 확인하면
똑같은 정확한 튜플입니다.
와이즈 위즈도 마찬가지
그리고
figure1['data'][0]['y']
-둘 다 터플
figure2['data'][0]['y']
를 포함
.
그래 무슨 일이야? 왜
('E', 'F', 'G')
눈금 레이블을 업데이트 한 후 플롯되지 않습니까? 어떻게 고칠 수 있나요?
figure2
- 답변 # 1
관련 질문
- python : TypeError: matplotlib에서 플롯의 정수 스칼라 배열만 스칼라 인덱스로 변환할 수 있습니다.
- 사전(python, dict, 여러 플롯)에서 여러 dfs를 사용하여 루프에서 특정 수의 플롯을 플롯합니다.
- python : matplotlib로 빈 창에 그래프를 채우는 방법
- python : 텍스트를 기울임꼴로 만든 후 Figsize 및 축 선 너비가 갑자기 작아짐
- "ValueError: Shape Mismatch"로 이어지는 Python 오류 캐스케이드
- python : pandas DataFrame 플롯 xticks 간격이 작동하지 않습니다.
- python : matplotlib의 vlines에서 한 줄의 색상을 변경할 수 있습니까?
- python : Matplotlib pyplot stackplot은 앤티앨리어싱 시 아티팩트를 생성합니다.
- python : matplotlib를 사용하는 파이썬에서 matplotlib.pyplot.xlabel()과 .set_xlabel()의 차이점은 무엇입니까?
- python : matplotlib를 사용하여 3D Numpy 배열을 플로팅하는 분산형
지금까지 내가 찾은 수정은 레이아웃을 빈 레이아웃으로 바꾸는 것입니다. 어떤 이유로 matplotlib에서 변환 된 플롯 그래프의 레이아웃은 그림에 대한 업데이트가 반영되지 않는 것으로 보입니다. 레이아웃을 비워 둔 다음 (필요한 경우 제목 및 축 레이블과 같이 항목을 추가하면 아래 그림 참조) 제대로 작동하는 것 같습니다 :