绘制年度标准与评级

时间:2014-05-08 20:08:51

标签: python

我可以使用一些建议来解决我的问题,制作年份= X且评级为Y的情节。

创建了两个名为:

的列表
Ratings_sorted = []
Year = []

这些列表都有len 250,两个例子都是:

Ratings_sorted = ['8.3', '8.2', '8.2', '8.3', '8.5', '8.4', '8.2', '8.5', '8.2', '8.2', '8.1', '8.4', '8.2', '8.1', '8.4', '8.2', '8.6', '8.4', '8.6', '8.1', '8.1', '8.0', '8.3', '8.3',
Year = ['1921', '1925', '1926', '1927', '1931', '1931', '1934', '1936', '1939', '1939', '1939', '1940', '1940', '1940', '1941', '1941', '1942', '1944', '1946',
Ratings

所以这只是我的名单的味道,这是250长。

尝试使用以下代码生成条形图。

from matplotlib import pylab as plt
import numpy as np

plt.bar(Year, sorted_ratings)
plt.suptitle('Ratings based on years', fontsize=14)
plt.ylabel('Rating', fontsize=12)
plt.xlabel('Year', fontsize=12)  
plt.show()

尝试运行时,我收到错误:

无法连接' str'并且'漂浮'对象

读一些关于我的评级不是整数,然后我尝试了这样的函数图:

sorted_ratings2 = map(int, sorted_ratings)

然后我收到以下错误:对于带有基数为10的int()的无效文字:' 8.3'

希望有人知道这里有什么问题!

3 个答案:

答案 0 :(得分:2)

您的评分最好用浮点数表示,因此map(float, sorted_ratings)应该有效。您可能还想查看datetime库多年。

答案 1 :(得分:1)

您的评分为小数,因此您使用浮点数。 map(float, sorted_ratings)有效。这是一个演示:

x = "3"
print int(x)#Just 3
y = "8.5"
print int(y) # Oh no! Integers can’t have decimal points…

那是Python 2.x.对于Python 3.x,您的代码可以正常工作,但所有数字都将被舍入。

答案 2 :(得分:0)

我不明白为什么你的数字有引号,这就是为什么他们被读作字符串的原因。地图'根据@thecoder16的答案,方法有效。确保评级的长度和年份相同 - 我在发布上一个问题时更早得到了该错误。

from matplotlib import pylab as plt
import numpy as np
sorted_ratings = ['8.3', '8.2', '8.2', '8.3', '8.5', '8.4', '8.2', '8.5', '8.2', '8.2']

Years = ['1921', '1925', '1926', '1927', '1931', '1931', '1934', '1936', '1939', '1939']

x_pos = np.arange(len(Years))

sorted_ratings2 = map(float, sorted_ratings)

plt.bar(x_pos, sorted_ratings2)
plt.suptitle('Ratings based on years', fontsize=14)
plt.xticks(x_pos, Years) 
plt.ylabel('Rating', fontsize=12)
plt.xlabel('Year', fontsize=12)  
plt.show()