我需要用 Matplotlib 绘制大量矩形对象。这是一个带有 n 个随机生成矩形的简单代码。
import matplotlib
import matplotlib.pyplot as plt
import random
fig = plt.figure()
ax = fig.add_subplot(111, aspect='equal')
plt.xlim([0, 1001])
plt.ylim([0, 1001])
n=10000
for i in range(0,n):
x = random.uniform(1, 1000)
y = random.uniform(1, 1000)
ax.add_patch(matplotlib.patches.Rectangle((x, y),1,1,))
plt.show()
Run Code Online (Sandbox Code Playgroud)
n=10000 需要几秒钟,但如果我们将矩形的数量增加到 100K,则需要太多时间。有什么建议可以改进它,或者在合理的时间内使用不同的方法来制作情节?
我需要将浮点数保存到NSNumber(称为ordered.value的变量)中.问题是转换期间十进制数字已设置为零.
此外,我添加了3版变量的日志,以便您可以看到原始浮点数是正确的.然后NSNumber丢失了十进制数字.
这是我的第一次尝试(更简单的版本):
ordered.value = [NSNumber numberWithFloat:[o.valore floatValue]];
NSLog(@"%f,%f",[o.valore floatValue],[ordered.value floatValue]);
Run Code Online (Sandbox Code Playgroud)
但我仍然丢失十进制数字.日志:
2013-05-20 20:05:19.617 Piazzetta[9636:c07] 232.179993,232.000000
2013-05-20 20:05:19.617 Piazzetta[9636:c07] 20159.490234,20159.000000
2013-05-20 20:05:19.618 Piazzetta[9636:c07] 16.540001,16.000000
Run Code Online (Sandbox Code Playgroud)
这是我的第二次尝试(使用NSNumberFormatter)
NSNumberFormatter * f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterDecimalStyle];
ordered.value = [f numberFromString:o.valore];
NSLog(@"%f,%f",[o.valore floatValue],[ordered.value floatValue]);
Run Code Online (Sandbox Code Playgroud)
日志:
2013-05-20 20:16:22.781 Piazzetta[9951:c07] 232.179993,232.000000
2013-05-20 20:16:22.782 Piazzetta[9951:c07] 20159.490234,20159.000000
2013-05-20 20:16:22.782 Piazzetta[9951:c07] 16.540001,16.000000
Run Code Online (Sandbox Code Playgroud)