使用 python 散景创建调色板
Colour palette creation with python bokeh
我正在努力思考如何为数据集中第 3 列的 bokeh.scatter 图生成调色板。这是一个例子:
from bokeh.plotting import figure, output_file, show
import pandas as pd
data_headers = ['eastings', 'northings', 'obs']
data_points = pd.read_csv('~/Documents/ds/data.csv', header=None, names=data_headers)
my_color_map = [(20, green_val, blue_val) for blue_val, green_val in zip(data_points.obs, 255-data_points.obs)]
output_file("scatter.html")
p=figure(x_range=(0, 5), y_range=(0, 10))
p.scatter(x=data_points.eastings, y=data_points.northings, size=5, fill_color=my_color_map)
show(p)
数据集为:
1,3,123
1,4,97
1,5,83
1,6,192
2,3,126
2,3.5,97
2,4.6,102
2,5.8,45
并且色图合理分布因此:
>>> my_color_map
[(20, 132, 123), (20, 158, 97), (20, 172, 83), (20, 63, 192), (20, 129, 126), (20, 158, 97), (20, 153, 102), (20, 210, 45)]
除了没有填充圆圈之外,代码工作正常。我可以用 fill_color(100,100,100) 硬连线它来满足我自己,我可以批量更改颜色,但我想让颜色成为第 3 列的函数。
我正在尝试学习如何手动执行此操作(即仅填充 RGB 元组中的绿色和蓝色通道)但我认为我的最终目标是使用绘制 x,y 处的点的颜色来自 booked.palettes 的 brewer 调色板(等)相应地为该点着色。
我也可以让它在 matplotlib 中工作,但这里的目的是看看散景是如何工作的!
感谢您的帮助:-)
传递颜色元组列表doesn't work at the moment。相反,您可以将颜色定义转换为字符串并将字符串列表传递给 fill_color
from bokeh.plotting import figure, show, output_notebook
import pandas as pd
output_notebook()
TESTDATA=StringIO("""1,3,123
1,4,97
1,5,83
1,6,192
2,3,126
2,3.5,97
2,4.6,102
2,5.8,45
""")
data_headers = ['eastings', 'northings', 'obs']
data_points = pd.read_csv(TESTDATA, header=None, names=data_headers)
my_color_map = ["rgb({!s},{!s},{!s})".format(20, green_val, blue_val) for blue_val, green_val in zip(data_points.obs, 255-data_points.obs)]
p=figure(x_range=(0, 5), y_range=(0, 10))
p.scatter(x=data_points.eastings, y=data_points.northings, size=25, fill_color=my_color_map)
show(p)
我正在努力思考如何为数据集中第 3 列的 bokeh.scatter 图生成调色板。这是一个例子:
from bokeh.plotting import figure, output_file, show
import pandas as pd
data_headers = ['eastings', 'northings', 'obs']
data_points = pd.read_csv('~/Documents/ds/data.csv', header=None, names=data_headers)
my_color_map = [(20, green_val, blue_val) for blue_val, green_val in zip(data_points.obs, 255-data_points.obs)]
output_file("scatter.html")
p=figure(x_range=(0, 5), y_range=(0, 10))
p.scatter(x=data_points.eastings, y=data_points.northings, size=5, fill_color=my_color_map)
show(p)
数据集为:
1,3,123
1,4,97
1,5,83
1,6,192
2,3,126
2,3.5,97
2,4.6,102
2,5.8,45
并且色图合理分布因此:
>>> my_color_map
[(20, 132, 123), (20, 158, 97), (20, 172, 83), (20, 63, 192), (20, 129, 126), (20, 158, 97), (20, 153, 102), (20, 210, 45)]
除了没有填充圆圈之外,代码工作正常。我可以用 fill_color(100,100,100) 硬连线它来满足我自己,我可以批量更改颜色,但我想让颜色成为第 3 列的函数。
我正在尝试学习如何手动执行此操作(即仅填充 RGB 元组中的绿色和蓝色通道)但我认为我的最终目标是使用绘制 x,y 处的点的颜色来自 booked.palettes 的 brewer 调色板(等)相应地为该点着色。
我也可以让它在 matplotlib 中工作,但这里的目的是看看散景是如何工作的! 感谢您的帮助:-)
传递颜色元组列表doesn't work at the moment。相反,您可以将颜色定义转换为字符串并将字符串列表传递给 fill_color
from bokeh.plotting import figure, show, output_notebook
import pandas as pd
output_notebook()
TESTDATA=StringIO("""1,3,123
1,4,97
1,5,83
1,6,192
2,3,126
2,3.5,97
2,4.6,102
2,5.8,45
""")
data_headers = ['eastings', 'northings', 'obs']
data_points = pd.read_csv(TESTDATA, header=None, names=data_headers)
my_color_map = ["rgb({!s},{!s},{!s})".format(20, green_val, blue_val) for blue_val, green_val in zip(data_points.obs, 255-data_points.obs)]
p=figure(x_range=(0, 5), y_range=(0, 10))
p.scatter(x=data_points.eastings, y=data_points.northings, size=25, fill_color=my_color_map)
show(p)