Я пытаюсь создать шестнадцатеричную карту парламентских округов Великобритании в python, используя функцию HexTile библиотеки Bokeh. Я пытаюсь подражать шестнадцатеричной карте Leeds ODI (https://odileeds.org/projects/hexmaps/constituencies/) и использовали систему координат q r, указанную в загружаемом файле .hexjson.
Однако мой сюжет выглядит искаженным.
Я знаю, что система координат q r, которую мы использовали в функции Bokeh HexTile, может отличаться от той, которая используется в Leeds ODI. Следовательно, почему я инвертировал значение r, как и раньше, это построено под странным углом.
from bokeh.models import ColumnDataSource, Plot, LinearAxis, Grid, HoverTool
from bokeh.models.glyphs import HexTile
from bokeh.io import curdoc, show
import pandas as pd
df = pd.read_csv('/Users/georgefry/Documents/data_science/uk_pol/hex_map/cons_hex_coords.csv')
df['r'] = df['r'] * -1
df['q'] = df['q']
source = ColumnDataSource(df)
hover = HoverTool(tooltips=[('Code', '@code')])
plot = Plot(
title=None, plot_width=300, plot_height=300,
min_border=0, toolbar_location=None, tools=[hover])
glyph = HexTile(q="q", r="r", size=1, fill_color="#fb9a99", line_color="white")
plot.add_glyph(source, glyph)
xaxis = LinearAxis()
plot.add_layout(xaxis, 'below')
yaxis = LinearAxis()
plot.add_layout(yaxis, 'left')
plot.add_layout(Grid(dimension=1, ticker=xaxis.ticker))
plot.add_layout(Grid(dimension=0, ticker=yaxis.ticker))
curdoc().add_root(plot)
show(plot)
Я понимаю, что это такая же проблема геометрии, как и проблема боке. Я также знаю, что решение будет найдено путем постепенного наклона всего, что ниже начала координат по оси Y, влево, а всего, что выше, вправо. Тем не менее, я пробовал ряд преобразований, но ни одно из них не дало желаемого результата.
Желаемый результат похож на ссылку ODI в Лидсе.