python - matplotlib scatter 耗时太长
问题描述
考虑下面的代码,它产生各种颜色的点的随机序列。
import matplotlib.pyplot as plt
import random
n = 100
x = [0]*n
y = [0]*n
col=['red']*n
for i in range(1,n):
val = random.randint(1,2)
if val == 1:
col[i] = 'red'
if val == 2:
col[i] = 'yellow'
ax=plt.figure().add_subplot()
for i in range(n):
ax.scatter(i,0, color=col[i])
#print(x[i],y[i],col[i])
plt.show()
现在它做 100 点,但我希望它做 10000 点。但是这样做需要很长时间,我怎样才能让它更快?谢谢
解决方案
n
避免一次绘制一个散点的不必要的 for 循环。相反,一次绘制整个范围并传递整个col
颜色列表
fig = plt.figure()
ax = fig.add_subplot(111)
ax.scatter(range(n), [0]*n, color=col)
plt.show()
推荐阅读
- mysql - 如何将 Shiny 中的数据保存到 MySQL
- sql - 用于从表中获取记录的 SQL 查询需要很长时间,但当我运行 exec sp_updatestats 时按预期工作
- java - log4j2.12.1 中的 PatternConverter 类不包含构造函数
- javascript - 如何在按钮单击(jQuery 或 JavaScript)上再次重新加载 firstload 函数
- azure - Azure 中是否需要 Active Directory 访问权限才能创建 Kubernetes 服务?
- azure - 安装 Azure DevOps Server 会卸载旧的 TFS 实例吗?
- angular - Angular 自定义验证器:为什么要导出函数?
- ios - 无法访问 UIDragItem 上的属性 sourceIndexPath
- google-sheets - 转置具有 2 个排序条件的 GSheet 表
- d3.js - 添加当前月份的d3js时间轴呈现多个矩形并且不清除