格式化刻度标签 matplotlib 并添加字符串值

kji*_*ngo 2 python matplotlib

我想将我的 xtick 和 ytick 值格式化为浮点数的两位小数,并在最后添加一个“%”。我该怎么办?

x_sum = cm.sum(axis=0)*100
y_sum = cm.sum(axis=1)*100
plt.xticks(tick_marks, x_sum)
plt.yticks(tick_marks, y_sum)
Run Code Online (Sandbox Code Playgroud)

目前,刻度给我很长的十进制值。

Imp*_*est 5

从问题中可以看出,无论如何您都想手动设置刻度,因此您只需要格式化刻度标签,

import numpy as np
import matplotlib.pyplot as plt

cm = np.sort(np.random.rand(64)).reshape((8,8))
tick_marks=np.arange(8)

plt.imshow(cm)

x_sum = cm.sum(axis=0)*100
y_sum = cm.sum(axis=1)*100

fmt = lambda x: "{:.2f}%".format(x)

plt.xticks(tick_marks, [fmt(i) for i in x_sum], rotation=90)
plt.yticks(tick_marks, [fmt(i) for i in y_sum])

plt.tight_layout()
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

对于自动百分比标签,这matplotlib.ticker.PercentFormatter是有道理的:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.ticker import PercentFormatter

cm = np.sort(np.random.rand(64)).reshape((8,8))

plt.imshow(cm, extent=(0,80,0,80))

plt.gca().xaxis.set_major_formatter(PercentFormatter(decimals=2))
plt.gca().yaxis.set_major_formatter(PercentFormatter(decimals=2))

plt.gca().tick_params(axis="x",rotation=90)
plt.tight_layout()
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明