python - Python散景随机颜色生成器
问题描述
这是我在此的头一篇博文。我正在编写 Python 代码来模拟 1000 个粒子在 200 天内的随机运动并绘制到散景图上,我想为每个粒子生成一个随机颜色代码。但是,似乎该图正在使用最后一个 RGB 颜色代码来绘制点。有没有办法让随机颜色起作用?谢谢
def color_gen():
co=(round(random.random()*250),round(random.random()*250),round(random.random()*250))
return co
TOOLS="pan,wheel_zoom,reset,poly_select,box_select"
p = figure(plot_width=900, plot_height=900,
x_axis_type='auto',y_axis_type='auto',
title='Concentration')
i=1 #Particale ID
c=1 #Days
while i<=imax:
co=color_gen()
# print(co)
while c<=cmax:
cxname="deltax"+str(c)
xsumname="XSum"+str(c)
p.circle(data[xsumname], c, legend_label='Partical {}'.format(c), size=2, color=co)
c=c+1
i=i+1
p.legend.click_policy="hide"
p.legend.location = "top_left"
p.xaxis.axis_label = 'Z (m)'
p.yaxis.axis_label = 'C0 (kg/cu.m)'
# show the results
show(p)
解决方案
首先,像 Bokeh 字形一样circle
旨在以矢量化方式使用,即一次调用circle
可用于绘制 1000 个圆圈。实际上,相反,circle
在循环中调用 1000 次以单独绘制 1000 个单个圆圈,无论是在 Python 端,还是在浏览器中,都将是非常糟糕的。这根本不是 API 的预期用途。
根据您的描述,您应该具有类似于以下内容的代码:
from bokeh.models import ColumnDataSource
source = ColumnDataSource(data={
'x' : [ << 1000 x coordindates >> ],
'y' : [ << 1000 y coordindates >> ],
'color' : [ << 1000 random RGB colors >> ],
})
plot = figure(...)
plot.circle('x', 'y', color='color', source=source)
这将使用您放入数据源的 1000 种随机颜色绘制 1000 个圆圈。还有其他可能性,但这是最简单的开始。您可以在用户指南的提供数据章节中阅读有关向 Bokeh 提供数据的更多信息。
推荐阅读
- scala - 在 Spark 的结构化流模式下,获取 Offset 的消息正在重置
- lucene - 创建索引器时文件系统锁定
- java - 有没有办法从抽象类的具体方法访问具体的类变量值
- angular - 在 ts 文件中显示从 mat-select 多个中选择的值
- twilio - 错误代码“12200”XML 验证警告:“找不到元素 'html' 的声明。”
- c# - sp_getapplock 和 ADO.Net 命令超时
- html - 如何设计没有车站或线路名称封面的“地铁线路”的css布局
- json - 比较 2 个 json 数组并返回差异
- python - 如何使用 cgi 接受带有 python 脚本的 post 请求?
- sql - 按每个(批量)大小的 ID 对 SQL 结果进行分区