Python 排序值图matplotlib
我刚开始学习,我的代码有点问题 我需要Python 排序值图matplotlib,python,numpy,matplotlib,Python,Numpy,Matplotlib,我刚开始学习,我的代码有点问题 我需要yMin从60和yMax=100开始,但为什么我的结果是这样 有人能帮我吗 这是我的密码 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)
yMin
从60
和yMax=100
开始,但为什么我的结果是这样
有人能帮我吗
这是我的密码
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%}”。格式(0.80443)
这就是我的结果
我想把小数点改为百分数,并把它四舍五入到小数点后两位。这就是为什么我使用
格式
-@bigben首先,你会发现百分比格式不正确。这些值是格式化后的字符串,而不是数字
如果有这样的列表,只需将浮点值乘以100:
a = [0.80443, 0.84176, 0.84278, 0.82316, 0.82260]
data[0] = [ x * 100 for x in a ]
然后,当您绘制每个列表时,您将得到80.443、84.176…
等值
如果要在相乘和打印后控制y轴上的范围,请设置:
plt.ylim([60100])
这将y轴限制为60
和100
之间的值
编辑:
要格式化y轴上的刻度,建议使用matplotlib
中的ticker
方法:
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))
)
为什么要
.format
整理数据?我想将小数改为百分比,并将其四舍五入到小数点后两位。@BigBenBut.format()
返回一个格式化字符串,这不是您想要的。@BigBen我为我的问题提供了更多图片