2016-11-24 3 views
1

Для участка, как это:добавить субтитры для строк сюжета

import matplotlib.pyplot as plt 
import numpy as np 

x = np.linspace(0, 2 * np.pi, 400) 
y = np.sin(x ** 2) 

f, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2, sharey=True) 
ax1.plot(x, y) 
ax2.scatter(x, y) 
ax3.scatter(x, 2 * y ** 2 - 1, color='r') 
ax4.plot(x, 2 * y ** 2 - 1, color='r') 

, как я могу добавить субтитры к ряду ?. Он должен выглядеть следующим образом:

enter image description here

Я сделал «title1» и «TITLE2» с Photoshop, как я могу добавить их к сюжету в питоне?

+0

Вы можете использовать 'ax3.set_title («Insert Title Здесь»)', чтобы дать название каждой сюжетные, однако это не отображается в середине строки .... – DavidG

ответ

2

Чтобы сделать название для участка с подзаговорами, Matplotlib имеет pyplot.suptitle. Так как может быть только один suptitle за рисунок, это не решит проблему, если вы хотите иметь две строки цифр.

Использование plt.text() можно установить текст в качестве осей, который также не хотел, поэтому я хотел бы предложить использовать plt.figtext

Это может быть затем необходимо подстраивать spacingbetween ряды сюжетных линий с помощью plt.subplots_adjust(hspace = 0.3)

import matplotlib.pyplot as plt 
import numpy as np 

x = np.linspace(0, 2 * np.pi, 400) 
y = np.sin(x ** 2) 

f, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2, sharey=True) 
ax1.plot(x, y) 
ax2.scatter(x, y) 
ax3.scatter(x, 2 * y ** 2 - 1, color='r') 
ax4.plot(x, 2 * y ** 2 - 1, color='r') 

plt.figtext(0.5,0.95, "A tremendously long title that wouldn't fit above a single figure", ha="center", va="top", fontsize=14, color="r") 
plt.figtext(0.5,0.5, "Yet another multi-worded title that needs some space", ha="center", va="top", fontsize=14, color="r") 
plt.subplots_adjust(hspace = 0.3) 
plt.savefig(__file__+".png") 
plt.show() 

enter image description here

+0

спасибо, я надеялся на более элегантное решение, но это удобно. – spore234

-1

Это довольно просто сделать; звоните set_title на сюжетных

import matplotlib.pyplot as plt 
import numpy as np 

plt.style.use('ggplot') 
x = np.linspace(0, 2 * np.pi, 400) 
y = np.sin(x ** 2) 

f, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2, sharey=True) 
ax1.plot(x, y) 
ax1.set_title("a blue line") 

ax2.scatter(x, y) 
ax2.set_title("cool blue dots") 

ax3.scatter(x, 2 * y ** 2 - 1, color='r') 
ax3.set_title("cool red dots") 

ax4.plot(x, 2 * y ** 2 - 1, color='r') 
ax4.set_title("a red line") 

plt.show() 

with titles]

+0

Это не то, что я хочу. Я хочу комбинированное название для двух верхних и нижних двух графиков, которые появляются в середине. – spore234

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