如何手动定义 Lisa 簇的颜色?
How to define colors of Lisa cluster manually?
我正在尝试制作一些 LISA CLUSTERS 地图。
O 更改了 lisa_cluster 函数的 code 以指定我想要的颜色。我使用了通用的 5 种颜色列表,并手动更改了它
from matplotlib import patches, colors
import palettable
palettable.colorbrewer.sequential.Greys_5_r.colors = [[60,60,60],[105,105,105],[0,0,255],[255,255,0],[240,240,240]]
paleta = palettable.colorbrewer.sequential.Greys_5_r.mpl_colormap
def lisa_cluster(moran_loc, gdf, p=0.05, ax=None,
legend=True, legend_kwds=None, **kwargs):
...
if ax is None:
figsize = kwargs.pop('figsize', None)
fig, ax = plt.subplots(1, figsize=figsize)
else:
fig = ax.get_figure()
gdf.assign(cl=labels).plot(column='cl', categorical=True,
k=2, cmap=paleta, linewidth=0.1, ax=ax,
edgecolor='white', legend=legend,
legend_kwds=legend_kwds, **kwargs)
ax.set_axis_off()
ax.set_aspect('equal')
return fig, ax
所以我希望每个象限中的区域具有以下颜色:
1(HH)-黑色
2(HL)-深灰色
3(LL)-黄色
4(LH) - 蓝色
不显着 - 浅灰色
问题是颜色正在合并,我不知道为什么。
我用各自的象限标记了区域以显示
2003和2004都可以。在 2002 年的地图上,黄色和蓝色(我认为还有蓝色和浅灰色)合并了
解决方法是更改从函数mask_local_auto
导入的对象。
密码是here.
颜色在对象中定义colors5
:
(...)
#create a mask for local spatial autocorrelation
cluster = moran_hot_cold_spots(moran_loc, p)
cluster_labels = ['ns', 'HH', 'LH', 'LL', 'HL']
labels = [cluster_labels[i] for i in cluster]
colors5 = {0: 'lightgrey',
1: '#d7191c',
2: '#abd9e9',
3: '#2c7bb6',
4: '#fdae61'}
colors = [colors5[i] for i in cluster] # for Bokeh
# for MPL, keeps colors even if clusters are missing:
x = np.array(labels)
y = np.unique(x)
colors5_mpl = {'HH': '#d7191c',
'LH': '#abd9e9',
'LL': '#2c7bb6',
'HL': '#fdae61',
'ns': 'lightgrey'}
colors5 = [colors5_mpl[i] for i in y] # for mpl
(...)
我正在尝试制作一些 LISA CLUSTERS 地图。 O 更改了 lisa_cluster 函数的 code 以指定我想要的颜色。我使用了通用的 5 种颜色列表,并手动更改了它
from matplotlib import patches, colors
import palettable
palettable.colorbrewer.sequential.Greys_5_r.colors = [[60,60,60],[105,105,105],[0,0,255],[255,255,0],[240,240,240]]
paleta = palettable.colorbrewer.sequential.Greys_5_r.mpl_colormap
def lisa_cluster(moran_loc, gdf, p=0.05, ax=None,
legend=True, legend_kwds=None, **kwargs):
...
if ax is None:
figsize = kwargs.pop('figsize', None)
fig, ax = plt.subplots(1, figsize=figsize)
else:
fig = ax.get_figure()
gdf.assign(cl=labels).plot(column='cl', categorical=True,
k=2, cmap=paleta, linewidth=0.1, ax=ax,
edgecolor='white', legend=legend,
legend_kwds=legend_kwds, **kwargs)
ax.set_axis_off()
ax.set_aspect('equal')
return fig, ax
所以我希望每个象限中的区域具有以下颜色:
1(HH)-黑色
2(HL)-深灰色
3(LL)-黄色
4(LH) - 蓝色
不显着 - 浅灰色
问题是颜色正在合并,我不知道为什么。
我用各自的象限标记了区域以显示
2003和2004都可以。在 2002 年的地图上,黄色和蓝色(我认为还有蓝色和浅灰色)合并了
解决方法是更改从函数mask_local_auto
导入的对象。
密码是here.
颜色在对象中定义colors5
:
(...)
#create a mask for local spatial autocorrelation
cluster = moran_hot_cold_spots(moran_loc, p)
cluster_labels = ['ns', 'HH', 'LH', 'LL', 'HL']
labels = [cluster_labels[i] for i in cluster]
colors5 = {0: 'lightgrey',
1: '#d7191c',
2: '#abd9e9',
3: '#2c7bb6',
4: '#fdae61'}
colors = [colors5[i] for i in cluster] # for Bokeh
# for MPL, keeps colors even if clusters are missing:
x = np.array(labels)
y = np.unique(x)
colors5_mpl = {'HH': '#d7191c',
'LH': '#abd9e9',
'LL': '#2c7bb6',
'HL': '#fdae61',
'ns': 'lightgrey'}
colors5 = [colors5_mpl[i] for i in y] # for mpl
(...)