Это своего рода последующий вопрос к сообщению this, в котором обсуждалась окраска осей, тиков и меток. Я надеюсь, что это нормально, чтобы открыть новый расширенный вопрос для этого.
Изменение цвета полного кадра (тиков и осей) вокруг двойного графика (через add_subplot
) с помощью осей [ax1, ax2] приводит к большому количеству кода. Этот фрагмент изменяет цвет рамки верхнего участка:
ax1.spines['bottom'].set_color('green')
ax1.spines['top'].set_color('green')
ax1.spines['left'].set_color('green')
ax1.spines['right'].set_color('green')
for t in ax1.xaxis.get_ticklines(): t.set_color('green')
for t in ax1.yaxis.get_ticklines(): t.set_color('green')
for t in ax2.xaxis.get_ticklines(): t.set_color('green')
for t in ax2.yaxis.get_ticklines(): t.set_color('green')
Итак, для изменения цвета рамки двух графиков с двумя у-осями каждый мне понадобится 16 (!) строк кода... Вот как это выглядит:
Другие методы, которые я докопал до сих пор:
-
matplotlib.rc: обсуждался здесь; изменяет глобально, а не локально. Я хочу иметь некоторые другие сюжеты в разных цветах. Пожалуйста, не обсуждайте слишком много цветов на сюжетах...: -)
matplotlib.rc('axes',edgecolor='green')
-
выкопайте шипы оси, затем измените ее: также обсуждается здесь; не очень элегантный, я думаю.
for child in ax.get_children(): if isinstance(child, matplotlib.spines.Spine): child.set_color('#dddddd')
Есть ли элегантный способ уплотнения вышеуказанного блока, что-то более "pythonic"?
Я использую python 2.6.5 с matplotlib 0.99.1.1 под ubuntu.