내 의도 : 일부 내용을 플롯하고 기본 x-tick 레이블에 해당하는 숫자를 가져 와서 이러한 목록을 색인에 사용하므로 그 날짜를 기본 레이블 대신 넣을 수 있습니다.기본 x-tick 레이블 텍스트를 색인으로 사용하여 눈금 레이블을 다른 텍스트로 업데이트
나는 두 개의 목록이 상상 :
my_data = range(30)
dates_ls = ['date_str1', 'date_str2', ... , 'date_str30']
그때 그냥 기본 x 축에서 숫자 색인 dates_ls
을 의미 dates_ls
에서 해당 날짜로 X-틱을 대체,이 데이터를 플롯 할 눈금 레이블.
편집 : 나는 목록입니다 URL_names 및 metrics_ls을 통해 반복하고있어, 위의에서
dates_ls = ['dates_' + str(x+1) for x in range(30)]
metrics_ls = ['sessions', 'pageviews']
URL_names = ['URL_1', 'URL_2']
DataDict_final = dict()
for name in URL_names:
DataDict_final[name] = {metric: [] for metric in metrics_ls}
DataDict_final['URL_1']['sessions'] = range(30) # manually define for this example
DataDict_final['URL_1']['pageviews'] = range(30)
DataDict_final['URL_2']['sessions'] = range(30)
DataDict_final['URL_2']['pageviews'] = range(30)
for cur_page in URL_names:
# plot
fig, ax = plt.subplots()
for i, cur_metric in enumerate(metrics_ls):
data2plot = DataDict_final[cur_page] [cur_metric]
ax.plot(data2plot, label=cur_metric)
# x and y axis limits and labels
ax.set_xlim(0, len(DataDict_final[cur_page] [cur_metric])-1)
x_labs1 = [int(label.get_position()[0]) for label in ax.get_xticklabels()]
x_labs2 = [dates_ls[x] for x in x_labs1]
ax.set_xticklabels(x_labs2, fontsize=8, rotation=45, ha='right')
: 그래서, 문제는 내가 for 루프에있어한다는 사실 때문에 어떻게 든 것으로 보인다 나는 숫자의 단지 목록 인 data2plot을 얻을 수있는 사전 키를 가지고있다. 강조 표시하고 for 루프를 사용하여 코드를 실행하면 잘 동작하지만 여러 개의 숫자를 생성하는 전체 루프를 실행하면 x_labs1은 0의 목록으로 끝나기 때문에 모든 x-tick 레이블은 동일합니다 dates_ls의 첫 번째 항목입니다.
어떤 프로그램에서 + 입력하고 강조 표시 하시겠습니까? 문제를 재현 할 수 있는지 확인하십시오. – ImportanceOfBeingErnest
Spyder 3.1.2를 사용하고 있습니다. – pavlov
OP를 편집하여 여러 줄을 작성하는 for 루프에 있기 때문에 문제가 발생하는 방법을 설명했습니다. 아직 문제를 해결하지는 못했지만 for 루프를 사용하여 작업하고있는 것과 관련이 있습니다. – pavlov