2015-09-12 2 views
1

Я хочу использовать круглую форму для тиков. Я попробовал следующее, но это не сработает.Изменение наклеек клещей в matplotlib

import matplotlib.pyplot as plt 
# better tick visiblity to check the capstyle 
plt.rcParams.update({ 
      'figure.dpi': 150, 
      u'xtick.major.size': 5.0, 
      u'xtick.major.width': 2, 
      }) 

fig, ax = plt.subplots() 
ax.plot([1, 2, 3, 4]) 

tl = ax.xaxis.get_ticklines()  
for i in tl: 
    i.set_solid_capstyle('round') 
plt.show() 

ответ

2

Итак, Причина, по которой это не работает в том, что клещ знаки реализуются отдельные линии точкой с клещами нарисованных в качестве маркеров.

In [127]: [i.get_linestyle() for i in ax.xaxis.get_ticklines()] 
Out[127]: 
['None', 
'None', 
'None', 
'None', 
'None', 
'None', 
'None', 
'None', 
'None', 
'None', 
'None', 
'None', 
'None', 
'None'] 

и

In [128]: [i.get_marker() for i in ax.xaxis.get_ticklines()] 
Out[128]: [2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3] 

см docs для отображения между Интс -> форма, это чередование 'tickup' и 'tickdown'.

Это позволит вам сделать полу-милые вещи, как

[i.set_marker('o') for i in ax.xaxis.get_ticklines()] 

, который дает circles as ticks


Если вы используете это, когда перед брейки будет ваша проблема

Чтобы получить то, что вы хотите, вы можете хорошо вписаться в кишки и установить кастеты на отметках:

for i in ax.xaxis.get_ticklines(): 
    # reach in and poke the guts 
    # USE AT YOUR OWN RISK 
    i._marker._capstyle = 'round' 
    # this is not officially supported 

нота это использует не 1, а 2 частные атрибуты и будут быть сломаны traitlet реорганизовать, который идет в следующем году (целевой для v2.1). Это также будет переустановлено на жестко закодированное значение 'butt' на _recache звонках (которые я не помню с верхней части головы точно, когда это вызвано).

Я не думаю, что вы действительно хотите сделать это:

round cap ticks

, как она округляет оба конца клещи, а не только сторона указала в (но может быть, меньше, клещ размеры закругленного ' out 'будет скрыт от позвоночника)

+0

Спасибо! Хорошие округлые односторонние закругленные маркеры сделают еще одну приятную особенность. – tillsten

+1

@tillsten Я не могу подчеркнуть достаточно, хотя вы ** не должны на самом деле делать это **, поскольку есть среднесрочный план, чтобы сломать его! Я изучил, используя «Путь», чтобы рисовать маркер полукруглым маркером. Я думаю, что это возможно, это просто потребует некоторой финализации, и в этом случае будет выяснено, что такое «ширина» и «длина». – tacaswell

+0

Я также рассмотрю возможное решение пути. Кстати, есть ли настройка mpl, чтобы отключить тики, когда их местоположение находится точно в положении позвоночника? – tillsten

Смежные вопросы