【发布时间】:2014-09-02 18:49:42
【问题描述】:
我有一个字典aggregate_dict,其中有字母 a:z 作为键,每个键都有一个列表,其中正好包含 11 个介于 0 和 1 之间的数值作为其关联值。我希望使用这些数据创建一个散点图,其中字母表中的字母在 x 轴上从 a 到 z 排列,给定字母的每个值在 y 轴上排列,如下所示:
我通常会在一秒钟内用 R 解决这个问题,但我正在使用的机器上没有 R,我没有管理员权限,所以我只能在 Python 中完成。我正在尝试通过以下方式解决这个问题(下面有简化的字典):
from matplotlib import pyplot
def scatterplot(x,y):
pyplot.plot(x,y,'b.')
pyplot.ylim(0,1)
pyplot.title("Relative Frequency of Letters")
pyplot.show()
x_vals = []
y_vals = []
aggregate_dict = {'a':[.1,.2,.3],'b':[.2,.3,.4]}
for u in aggregate_dict:
x_vals.append(u)
y_vals.append(aggregate_dict[u])
scatterplot( x_vals, y_vals )
不幸的是,这种方法会产生以下跟踪:
Traceback (most recent call last):
File "C:/Users/dduhaime/Desktop/letter_distributions_each_section_tale.py", line 74, in <module>
scatterplot(x_vals, y_vals )
File "C:/Users/dduhaime/Desktop/letter_distributions_each_section_tale.py", line 56, in scatterplot
pyplot.plot(x,y,'b.')
File "C:\Python27\ArcGIS10.2\lib\site-packages\matplotlib\pyplot.py", line 2987, in plot
ret = ax.plot(*args, **kwargs)
File "C:\Python27\ArcGIS10.2\lib\site-packages\matplotlib\axes.py", line 4138, in plot
self.add_line(line)
File "C:\Python27\ArcGIS10.2\lib\site-packages\matplotlib\axes.py", line 1497, in add_line
self._update_line_limits(line)
File "C:\Python27\ArcGIS10.2\lib\site-packages\matplotlib\axes.py", line 1508, in _update_line_limits
path = line.get_path()
File "C:\Python27\ArcGIS10.2\lib\site-packages\matplotlib\lines.py", line 743, in get_path
self.recache()
File "C:\Python27\ArcGIS10.2\lib\site-packages\matplotlib\lines.py", line 420, in recache
x = np.asarray(xconv, np.float_)
File "C:\Python27\ArcGIS10.2\lib\site-packages\numpy\core\numeric.py", line 320, in asarray
return array(a, dtype, copy=False, order=order)
ValueError: could not convert string to float: a
有谁知道我可以如何解决这个错误并继续我的情节?如果您能提供任何建议,我将不胜感激!
【问题讨论】:
标签: python matplotlib plot