2013-04-17 4 views
2

Предположим, что у нас есть фигура с тремя графиками в ней для трех разных параметров. Но для всех трех графиков мы имеем ту же температуру T = 4K. Тогда как я могу добавить эту информацию на рисунке?Добавить дополнительную информацию в python plot?

Мне не интересно написать это в Подписи. Я хочу это на самой фигуре.

+0

http://stackoverflow.com/questions/14667502/matplotlib-add-labels-aligned-to-bottom-of-axis/14667686#14667686 пример с отличным использованием смешанных преобразований. – tacaswell

+0

Можете ли вы уточнить, какую маркировку вы хотите? Почти во всех мыслимых случаях ответ «да», вы можете добавить его, но знание того, что вы хотите добавить, могло бы облегчить ответ. – tacaswell

ответ

0

Я предлагаю серую горизонтальную зону вокруг Т = 4К зоны

Если посмотреть на axhspan(ymin, ymax, xmin=0, xmax=1, **kwargs) в matplotlib documentation for axes, вы можете сделать что-то вроде, что:

horizontal and vertical zones

2

figtext будет работать хорошо.

Преимущество figtext над text и annotate является то, что figtext по умолчанию использует координаты фигуры, в то время как другие по умолчанию использовать координаты осей (и, следовательно, «T = 4K» будет перемещаться, если ваши оси отличаются между различные графики).

import matplotlib.pyplot as plt 

plt.figure() 
plt.xlim(-10, 10) 
plt.ylim(0, .01) 
plt.figtext(.8, .8, "T = 4K") 
plt.show() 

enter image description here

+0

вы можете указать как «аннотировать», так и «текст» использовать единицы фигуры (или [mix] (http://matplotlib.org/users/transforms_tutorial.html#blended-transformations)) – tacaswell

+0

@tcaswell: Да, но Важным аспектом моего ответа является указание на то, что OP, вероятно, хочет координаты фигуры (о которых ни один из других ответов не упоминает), а не о различных способах ее достижения. И «figtext» - это очевидный способ добраться туда, а не «текст» с преобразованием. – tom10

+0

Мне нравится ваше редактирование лучше. Я бы предположил, что OP хочет оси единиц, хотя, поэтому вам не придется исправлять это, если вы делаете подзаголовки или меняете размер метки метка. – tacaswell

0

Вот демонстрация использования annotate. Отъезд this example для разных стилей аннотации.

import matplotlib.pyplot as plt 
import numpy as np 

plt.ion() 
fig, ax = plt.subplots() 

x = np.linspace(0,4,100) 

plt.plot(x,2*x) 
plt.plot(x,x**2) 
plt.plot(x,np.sqrt(8*x)) 

ax.annotate('T = 4K', xy=(2,4), xycoords='data', 
      xytext=(-100,60), textcoords='offset points', 
      arrowprops=dict(arrowstyle='fancy',fc='0.6', 
          connectionstyle="angle3,angleA=0,angleB=-90")) 

plt.show() 
raw_input() 

enter image description here

1

figtext может сделать аннотации на bootom нескольких сюжетных понять, как комментарий, независимо от фигуры, так что вы можете сделать дополнительные комментарии или замечания все в одной картине. Я тоже искал это. Спасибо вам, ребята! :-)

import matplotlib.pyplot as plt 

plt.figure(1) 
plt.suptitle("SOME TITLE HERE") 
#FIRST SUBPLOT 
plt.subplot(311) 
plt.ylabel(r"$a [m/s^2]$") # YOU CAN USE LaTeX TYPESETTING IN PYPLOT STRINGS! 
plt.xlabel("time [s]") 
plt.grid(True) 
plt.plot(some_data) 
# SECOND SUBPLOT 
plt.subplot(312) 
... 
# THIRD SUBPLOT 
plt.subplot(313) 
... 
# BOTTOM LABEL 
plt.figtext(0.5, 0, "SOME LABEL BELOW ALL SUBPLOTS", ha="center", fontsize=7, bbox={"facecolor":"orange", "alpha":0.5, "pad":5}) 
# DRAW THE PLOT 
plt.show() 

Notre ha=center центрирует строку, если x=0.5. Вы также можете использовать параметры fontsize и bbox, чтобы изменить внешний вид строки и ее области.

+0

FIGTEXT - важный ответ. кто-то, кто задает этот вопрос, поймет, а также найдет ссылку на библиотеку. есть также объяснение, почему это ответ, так что это не ответ «только для ссылок». – CeDeROM

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