텍스트 레이블을 그래프의 x 티커와 어떻게 정렬해야합니까? 나는 host.set_xticklabels (라벨, 회전 = '수직')을 사용하고 있지만, 그것이 작동하지 않는 것 같습니다. 내 레이블은 문장이고 일부는 "미이라 파트 2"와 같이 다른 레이블보다 크기가 작거나 클 수 있습니다.이를 수용하기 위해 x 축 아래 공간을 어떻게 채 웁니까? matplotlib의 x 축에 텍스트 레이블을 3 개의 플롯으로 정렬/회전
from mpl_toolkits.axes_grid1 import host_subplot
import mpl_toolkits.axisartist as AA
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
path='/home/project/df.csv'
df=pd.read_csv(path,sep=',',header='infer')
xs =range(0,101)
ys =list(df['B'].ix[0:100])
zs=list(df['C'].ix[0:100])
ws=list(df['D'].ix[0:100])
if 1:
host = host_subplot(111, axes_class=AA.Axes)
p1, = host.plot(xs, ys, label='B')
plt.subplots_adjust(right=0.75)
par1 = host.twinx()
par2 = host.twinx()
offset = 60
new_fixed_axis = par2.get_grid_helper().new_fixed_axis
par2.axis["right"] = new_fixed_axis(loc="right",
axes=par2,
offset=(offset, 0))
par2.axis["right"].toggle(all=True)
host.set_xlim(min(xs), max(xs))
host.set_ylim(100, max(ys))
host.set_xlabel("A")
host.set_ylabel("B")
par1.set_ylabel("C")
par2.set_ylabel("D")
p2, = par1.plot(xs, ws, label='C',color='red')
p3, = par2.plot(xs, zs, label='D',color='green')
for tl in par1.get_yticklabels():
tl.set_color('red')
for tl in par2.get_yticklabels():
tl.set_color('green')
for tl in par1.get_yticklabels():
tl.set_color('r')
for tl in par2.get_yticklabels():
tl.set_color('g')
host.legend()
host.axis["left"].label.set_color(p1.get_color())
par1.axis["right"].label.set_color(p2.get_color())
par2.axis["right"].label.set_color(p3.get_color())
start, end, stepsize=0,len(df)-1,3
host.xaxis.set_ticks(np.arange(start, end, stepsize))
labels=list(df['A'])[0::stepsize]
host.set_xticklabels(labels,rotation='vertical')
plt.tight_layout()
plt.draw()
plt.show()
나는 그림에서와 같이 "블랙"질량을 정렬 할 필요가있다.
여기 예제 python rotate values on xaxis to not overlap - plt.xticks (x, labels, rotation = 'vertical') 등의 제안을 시도했지만 작동하지 않았습니다.
편집 - 아래 Kazemakaze의 피드백에서 , 여기에 내가 뭘하려입니다 - : F, 호스트 = plt.subplots는() #host = host_subplot (111, axes_class = AA.Axes) 하지만 적응해야 나머지 코드도 마찬가지입니다. 이것이 작동하는 twinx 축이있는 예제를 제공 할 수 있습니까?
내 코드를 Secondary axis with twinx(): how to add to legend?에 적용하고 회전이 작동하며, 보조 축의 포인터가 필요합니다 ().
사진에서보기가 어렵습니다. 라벨이 제대로 회전하지 않습니까? – kazemakase
글자를 그릴 때 [0:10] - 회전이 무엇이든 상관없이 모든 것을 직선으로 볼 수 있습니다. 무작위로 샘플 데이터를 사용해보십시오. 편집 할 때 레이블 텍스트를 게시 할 수 있습니다. – ekta
샘플 라벨을 사용해보십시오 - [ "mummy returns", "lila", "ringa ringa roses", "아름다운 하루"] * 10 [무작위 데이터의 레코드 수는 무엇이든간에] – ekta