Форматирование тиков, меток matplotlib и добавление строковых значений - PullRequest
0 голосов
/ 05 июля 2018

Я хотел бы отформатировать мои значения xtick и ytick с двумя десятичными разрядами в float, а также добавить «%» в конце. Как бы я поступил об этом?

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)

В настоящее время галочки дают мне длинные десятичные значения.

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

Исходя из вопроса, вы все равно хотите установить галочки вручную, поэтому вам просто нужно отформатировать метки,

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()

enter image description here

Для автоматической маркировки в процентах 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()

enter image description here

0 голосов
/ 05 июля 2018

Простой способ определить форматирование меток тиков - создать собственный форматер тиков. Это возможно при использовании FuncFormatter из matplotlib .

from matplotlib.ticker import FuncFormatter
from matplotlib import pyplot as plt


def format_tick_labels(x, pos):
    return '{0:.2f}%'.format(x)

values = range(20)
f, ax = plt.subplots()

ax.xaxis.set_major_formatter(FuncFormatter(format_tick_labels))
ax.plot(values)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...