首页 > 解决方案 > Matplotlib 用下标和格式注释

问题描述

我正在尝试将带有下标的注释添加到我的散点图中。问题是格式似乎不适用于两位数的整数。注解只将第一个符号变成下标,如下图所示。有谁知道如何解决这一问题?

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

rnd.seed(1234)

#Generate data
n = 12 #Number of vehicles
N = [i for i in range(1,n+1)] #Set of vehicles
V = [0] + N #Set of all nodes
q = {i: rnd.randint(1,10) for i in N} #Number of goods to be transported to each customer

#Generate coordinates
loc_x = rnd.rand(len(V))*300
loc_y = rnd.rand(len(V))*500

plt.scatter(loc_x[1:], loc_y[1:], c='b')
for i in N:
    plt.annotate('$q_{}={}$'.format(i, q[i]),(loc_x[i]+2, loc_y[i]))

失败的下标

标签: pythonmatplotlibannotationsscatter-plotsubscript

解决方案


以下将解决您的问题。

本质上,当您的下标长于单个字符时,您需要在下标周围添加花括号。但是,因为花括号也与格式方法有关,所以额外的花括号必须被更多的花括号转义才能按照我们的意愿进行解释。

plt.scatter(loc_x[1:], loc_y[1:], c='b')
for i in N:
    plt.annotate('$q_{{{}}}={}$'.format(i, q[i]),(loc_x[i]+2, loc_y[i]))

推荐阅读