граф значений сортировки matplotlib - PullRequest
0 голосов
/ 19 марта 2020

Я только начал изучать и у меня возникла небольшая проблема с моим кодом. Мне нужно yMin начать с 60 и yMax=100, но почему мои результаты таковы?

enter image description here

Может ли кто-нибудь помочь мне?

это мой код

import matplotlib.pyplot as plt
import numpy as np


data = [
["{:.2}".format(0.80443), "{:.2}".format(0.84176), "{:.2}".format(0.84278), "{:.2}".format(0.82316),"{:.2}".format(0.82260)],
["{:.2}".format(0.71956), "{:.2}".format(0.77691), "{:.2}".format(0.77279), "{:.2}".format(0.74522),"{:.2}".format(0.74747)],
["{:.2}".format(0.84256), "{:.2}".format(0.83268), "{:.2}".format(0.84152), "{:.2}".format(0.84204),"{:.2}".format(0.83775)],
["{:.2}".format(0.71956), "{:.2}".format(0.77691), "{:.2}".format(0.77279), "{:.2}".format(0.74522),"{:.2}".format(0.74747)],
["{:.2}".format(0.80320), "{:.2}".format(0.83787), "{:.2}".format(0.83933), "{:.2}".format(0.82087),"{:.2}".format(0.82008)],
["{:.2}".format(0.71956), "{:.2}".format(0.77043), "{:.2}".format(0.76772), "{:.2}".format(0.74286),"{:.2}".format(0.74432)],
["{:.2}".format(0.83641), "{:.2}".format(0.83009), "{:.2}".format(0.83847), "{:.2}".format(0.83743),"{:.2}".format(0.83333)],
["{:.2}".format(0.71956), "{:.2}".format(0.77043), "{:.2}".format(0.76772), "{:.2}".format(0.74286),"{:.2}".format(0.74432)],
]


year = ['set1', 'set2', 'set3', 'set4', 'set5']
plt.plot(year, data[0])
plt.plot(year, data[1])
plt.plot(year, data[2])
plt.plot(year, data[3])
plt.plot(year, data[4])
plt.plot(year, data[5])
plt.plot(year, data[6])
plt.plot(year, data[7])
plt.xlabel('xx')
plt.ylabel('aa')
plt.title('bb')
plt.show()

Если я изменю свой формат, например : "{:.2%}".format(0.80443)

так вот мои результаты

enter image description here

Я хочу изменить десятичное число на проценты и округлить его до двух десятичные разряды. вот почему я использую format - @ bigben

1 Ответ

1 голос
/ 19 марта 2020

Во-первых, вы собираетесь неправильно отформатировать проценты. Эти значения являются строками после их форматирования, а не числами!

Если у вас есть такой список, просто умножьте значения с плавающей запятой на 100:

a = [0.80443, 0.84176, 0.84278, 0.82316, 0.82260]
data[0] = [ x * 100 for x in a ]

Затем, когда вы строите каждый список, у вас будут значения 80.443, 84.176..., et c.

Если вы хотите управлять диапазоном по оси Y после умножения и построения графика, установите:

plt.ylim([60, 100])

, который ограничивает ось Y значениями от 60 до 100.

РЕДАКТИРОВАТЬ:

Чтобы отформатировать отметки на оси Y, я рекомендую использовать ticker методов в matplotlib:

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

fig, ax = plt.subplots(figsize=(15, 7))
plt.plot(year, data[0])
plt.ylim([60, 100])
ax.get_yaxis().set_major_formatter(
    ticker.FuncFormatter(lambda x, p: "{:.2%}".format(x))
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...