是否有增加matplotlib蜱的厚度和尺寸,而無需編寫這樣的長片的代碼的方式:matplotlib蜱厚度
for line in ax1.yaxis.get_ticklines():
line.set_markersize(25)
line.set_markeredgewidth(3)
與此片的代碼的問題是,它使用一個循環通常會花費大量的CPU使用。
是否有增加matplotlib蜱的厚度和尺寸,而無需編寫這樣的長片的代碼的方式:matplotlib蜱厚度
for line in ax1.yaxis.get_ticklines():
line.set_markersize(25)
line.set_markeredgewidth(3)
與此片的代碼的問題是,它使用一個循環通常會花費大量的CPU使用。
一個更簡單的方法是使用axis
對象的set_tick_params
功能:
ax.xaxis.set_tick_params(width=5)
ax.yaxis.set_tick_params(width=5)
這樣做,這樣意味着你可以在沒有擔心全球態,並用了做任何假設在每個軸基礎上改變這種mpl對象的內部結構。
如果要將此用於所有蜱蟲在你的斧頭,
ax = plt.gca()
ax.tick_params(width=5,...)
我喜歡這個選項 - 這很清楚這裏發生了什麼 –
失蹤的'?對我來說,它是ax.tick_params() – mikuszefski
@tylerswright謝謝你修復一個很長時間(和upvoted ?!)錯字。 – tacaswell
您可以更改使用rcParams所有matplotlib默認像
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
# set tick width
mpl.rcParams['xtick.major.size'] = 20
mpl.rcParams['xtick.major.width'] = 4
mpl.rcParams['xtick.minor.size'] = 10
mpl.rcParams['xtick.minor.width'] = 2
x = np.linspace(0., 10.)
plt.plot(x, np.sin(x))
plt.show()
plt.setp(ax.yaxis.get_ticklines(), 'markersize', 25)
plt.setp(ax.yaxis.get_ticklines(), 'markeredgewidth', 3)
您還可以使用列表理解,雖然沒有返回值可能沒有多大意義,除了減少代碼行數see e.g. here
[line.set_markersize(25) for line in ax1.yaxis.get_ticklines()]
[line.set_markeredgewidth(3) for line in ax1.yaxis.get_ticklines()]
爲什麼列表理解應該更高效,如果你從不使用結果列表? –
你說得對。如果我正確理解了[this](http://blog.cdleary.com/2010/04/efficiency-of-list-comprehensions/),可能會更糟(爲了效率和可讀性)。我會編輯我的答案。 PS,OT:這是一個演示,像stackoverflow是一個偉大的工具,因爲有時你學習更多的回答問題,問他們 –
很密切的關係http://stackoverflow.com/看看question/14711338/matplotlib-ticks-position-relative-to-axis – tacaswell