Ich habe folgende Handlung:Wie können Bokeh-Legenden mit Streudiagrammen unter Verwendung eines Datenrahmens angezeigt werden?
import pandas as pd
from bokeh.plotting import ColumnDataSource, figure, output_file, show
from bokeh.models import HoverTool
output_file("scatter.html")
df = pd.read_csv('/Users/jz/07_isolate_selection.csv')
hash = {}
c = ('aliceblue', 'antiquewhite', 'aqua', 'aquamarine', 'azure', 'beige', 'bisque', 'black',
'blanchedalmond', 'blue', 'blueviolet', 'brown', 'burlywood', 'cadetblue', 'chartreuse',
'chocolate', 'coral', 'cornflowerblue', 'cornsilk', 'crimson', 'cyan', 'darkblue', 'darkcyan',
'darkgoldenrod', 'darkgray', 'darkgreen', 'darkgrey', 'darkkhaki', 'darkmagenta', 'darkolivegreen',
'darkorange', 'darkorchid', 'darkred', 'darksalmon', 'darkseagreen', 'darkslateblue', 'darkslategray',
'darkslategrey', 'darkturquoise', 'darkviolet', 'deeppink', 'deepskyblue', 'dimgray', 'dimgrey', 'dodgerblue',
'firebrick', 'floralwhite', 'forestgreen', 'fuchsia', 'gainsboro', 'ghostwhite', 'gold', 'goldenrod',
'gray', 'green', 'greenyellow', 'grey', 'honeydew', 'hotpink', 'indianred', 'indigo', 'ivory', 'khaki',
'lavender', 'lavenderblush', 'lawngreen', 'lemonchiffon', 'lightblue', 'lightcoral', 'lightcyan',
'lightgoldenrodyellow', 'lightgray', 'lightgreen', 'lightgrey', 'lightpink', 'lightsalmon', 'lightseagreen',
'lightskyblue', 'lightslategray', 'lightslategrey', 'lightsteelblue', 'lightyellow', 'lime', 'limegreen',
'linen', 'magenta', 'maroon', 'mediumaquamarine', 'mediumblue', 'mediumorchid', 'mediumpurple', 'mediumseagreen',
'mediumslateblue', 'mediumspringgreen', 'mediumturquoise', 'mediumvioletred', 'midnightblue', 'mintcream', 'mistyrose',
'moccasin', 'navajowhite', 'navy', 'oldlace', 'olive', 'olivedrab', 'orange', 'orangered', 'orchid', 'palegoldenrod',
'palegreen', 'paleturquoise', 'palevioletred', 'papayawhip', 'peachpuff', 'peru', 'pink', 'plum', 'powderblue',
'purple', 'red', 'rosybrown', 'royalblue', 'saddlebrown', 'salmon', 'sandybrown', 'seagreen', 'seashell', 'sienna',
'silver', 'skyblue', 'slateblue', 'slategray', 'slategrey', 'snow', 'springgreen', 'steelblue', 'tan', 'teal',
'thistle', 'tomato', 'turquoise', 'violet', 'wheat', 'white', 'whitesmoke', 'yellow', 'yellowgreen');
#loop through and assign colors:
counter = 0
for a in df.material.unique():
hash[a] = c[counter]
counter += 1
# generate colors:
colors = [hash[code] for code in df.material]
df['color'] = colors
source = ColumnDataSource(df)
TOOLS="pan,wheel_zoom,box_zoom,reset,hover"
p = figure(title="Hoverful Scatter", tools=TOOLS)
p.circle('peak.count', 'purity.score', radius=.66, source=source,
fill_color=colors, fill_alpha=0.6, line_color=None)
hover = p.select(dict(type=HoverTool))[0]
hover.tooltips = [
("material", "@material")
]
show(p)
Wie kann ich eine Legende angezeigt werden, die in df.material Spalte definiert den Gruppen entspricht? Die Farbcodierung funktioniert unten, wo ich die Kreise nach dem df.material gruppiere, aber ich möchte auch eine Legende anzeigen, so dass Sie wissen, dass "aliceblue" mit "FOO" und "olive" mit "BAR" als entspricht Beispiel.
Danke!
[Möglicherweise verwandte] (https://stackoverflow.com/questions/43983039/color-points-in hilft -Scatter-Plot-von-Bokeh). Das sind eine Menge einzigartiger Farben, aber Sie können in den [CategoricalColorMapper] (https://bokeh.pydata.org/en/latest/docs/reference/models/mappers.html#bokeh.models.mappers.CategoricalColorMapper) schauen. – Hendy
und mein Favorit ist Darksalmon! –