我可以使用一些建议来解决我的问题,制作年份= 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'
希望有人知道这里有什么问题!
答案 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()