matplotlib 在图外但在图内书写文本

laximzn5  于 2023-08-06  发布在  其他
关注(0)|答案(1)|浏览(116)

我想在每一行的左边添加一个文本,但我不能这样做。我试过用

plt.annotate('Distance $\leq6.5$ $km$', (1, 1))
plt.text(1, 1, 'Distance $\leq6.5$ $km$')

字符串
但它总是导致在最后一个子情节中写入,如屏幕截图所示。

的数据
以下是我目前的计划:

import numpy as np
import numpy.random as rd
import matplotlib.pyplot as plt

Dic_Values = {'inf_6.5':{'v_moy':rd.randint(15,25, 20), 'cad':rd.randint(75,100,20), 'f_moy':rd.randint(130,180,20)},
              '6.5_9.5':{'v_moy':rd.randint(15,25, 11), 'cad':rd.randint(75,100,11), 'f_moy':rd.randint(130,180,11)},
              'sup_9.5':{'v_moy':rd.randint(15,25, 4), 'cad':rd.randint(75,100,4), 'f_moy':rd.randint(130,180,4)}}

def bilan_course():
    types = list(Dic_Values.keys())
    c = 0
    plt.figure(figsize=(21,7))
    Labels = ['S_moy', 'Cad', 'F_moy']
    Y_axis = ['S (in $km \cdot h^{-1}$)', 'Cad (in $step\cdot min^{-1}$)', 'F (in $beat\cdot min^{-1}$)']
    for ty in types:
        Donnees = Dic_Values[ty]
        Cles = list(Donnees.keys())
        for v in range(len(Cles)):
            plt.subplot(int('33'+str(3*c+v+1)))
            plt.plot(Donnees[Cles[v]], label=Labels[v])
            plt.xlabel('Course')
            plt.ylabel(Y_axis[v])
            plt.title(Labels[v])
            plt.ylim(0, max(Donnees[Cles[v]])*1.1)
            plt.legend(loc='best')
        c+=1

    plt.subplots_adjust(left=0.1, bottom=0.085, right=0.95, top=0.882, wspace=0.25, hspace=0.5)
    plt.annotate('Distance $\leq6.5$ $km$', (1, 1), fontsize=12)
    plt.suptitle('Summary', fontweight='bold')
    plt.show()

zmeyuzjn

zmeyuzjn1#

我想是时候让自己熟悉matplotlib的“expicit”API了:-)
(see API上的matpltolib文档)
简而言之,如果你使用plt.< do something >,matpltolib将总是尝试识别最近使用的轴并使用它!要处理显式轴,请调用实际要使用的轴对象上的方法!
这里有一个快速的片段,应该可以帮助你开始:

import matplotlib.pyplot as plt

f, axes = plt.subplots(3, 3, figsize=(10, 6))

for i, ax in enumerate(axes.flat):
    ax.plot([1,2,3])
    ax.set_title(f"this is ax {i}")
    ax.set_xlabel(f"x-label for ax {i}")
    ax.set_ylabel(f"y-label for ax {i}")
    
    ax.text(.25, .1, f"text on ax {i}", ha="left", va="bottom",
            transform=ax.transAxes, color="r")
    
f.tight_layout()

字符串
x1c 0d1x的数据

相关问题