Python 在Geopandas中编辑颜色栏(图例)?
在我正在创建的geopandas world choropleth中,我想用颜色条编辑多个内容。也就是大小(以便大致匹配地图本身)、文本大小(当前显示的文本太小),我还想给它添加一个标签。从阅读有关geopandas的内容来看,似乎没有简单的方法可以明确地做到这一点,因此我想知道是否有人可以提供任何解决方法?任何帮助都将不胜感激 这是我目前正在使用的代码(在某些情况下,中间部分只是按国家将列表与数字合并到框架中,我将其用作着色的基础)Python 在Geopandas中编辑颜色栏(图例)?,python,pandas,visualization,geopandas,choropleth,Python,Pandas,Visualization,Geopandas,Choropleth,在我正在创建的geopandas world choropleth中,我想用颜色条编辑多个内容。也就是大小(以便大致匹配地图本身)、文本大小(当前显示的文本太小),我还想给它添加一个标签。从阅读有关geopandas的内容来看,似乎没有简单的方法可以明确地做到这一点,因此我想知道是否有人可以提供任何解决方法?任何帮助都将不胜感激 这是我目前正在使用的代码(在某些情况下,中间部分只是按国家将列表与数字合并到框架中,我将其用作着色的基础) 这里的理想解决方案是保持图例选项的颜色,指定大小和文本大小,
这里的理想解决方案是保持图例选项的颜色,指定大小和文本大小,并在条形图顶部启用标签。不幸的是,我正在努力弄清楚这一切是如何完成的。在一个单独的图形中创建一个色条怎么样 使用找到的第一个示例,您可以创建一个函数:
import matplotlib as mpl
import numpy as np
import matplotlib.pyplot as plt
def create_colourbar(cmap, vmin, vmax, label, save_path=None):
''' Creates colourbar in separate figure
:param cmap: Cmap string or object
:param vmin: minimum value in data array
:param vmax: maximum value in data array
:param label: colourbar label
:param save_path: Save path, optional
'''
fig, ax = plt.subplots(figsize=(5, 1))
cb1 = mpl.colorbar.ColorbarBase(cmap=cmap,
norm=Normalize(vmin=vmin,
vmax=vmax),
orientation='horizontal', ax=ax)
cb1.set_label(label, fontsize=6)
plt.tight_layout()
if save_path:
plt.savefig(save_path3)
plt.show()
其中:
vmax = np.nanmax(world['LEADS'].values)
vmin = np.nanmin(world['LEADS'].values)
而cmap
是一个彩色贴图字符串或对象 找到的答案帮助我找到了解决办法
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize = (30,25))
vmin = data.column.min()
vmax = data.column.max()
data.plot(ax=ax,column = column,edgecolor='black',cmap = 'YlOrRd',legend = False)
plt.xlim([6,19])
plt.ylim([36,47.7])
plt.xticks([], [])
plt.yticks([], [])
cax = fig.add_axes([1, 0.1, 0.03, 0.8])
sm = plt.cm.ScalarMappable(cmap='YlOrRd', norm=plt.Normalize(vmin=vmin, vmax=vmax))
sm._A = []
cbr = fig.colorbar(sm, cax=cax,)
cbr.ax.tick_params(labelsize=200)
plt.tight_layout()
plt.savefig(os.path.join('out','fig.png'),format = 'png',bbox_inches='tight')
plt.show()
一旦拥有Colorbar对象my_cbar
,就可以用matplotlib方式设置属性。在这里,我改变了标签的大小。如果需要保存图形,请记住使用bbox\u inches='tight'
:否则将不保存颜色栏。
我的输出是这样的,修改了颜色栏的字体大小。
“cbr.ax.tick_参数(labelsize=200)”对我不起作用,但“plt.tick_参数(labelsize=200)”对我起作用。不知道为什么。
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize = (30,25))
vmin = data.column.min()
vmax = data.column.max()
data.plot(ax=ax,column = column,edgecolor='black',cmap = 'YlOrRd',legend = False)
plt.xlim([6,19])
plt.ylim([36,47.7])
plt.xticks([], [])
plt.yticks([], [])
cax = fig.add_axes([1, 0.1, 0.03, 0.8])
sm = plt.cm.ScalarMappable(cmap='YlOrRd', norm=plt.Normalize(vmin=vmin, vmax=vmax))
sm._A = []
cbr = fig.colorbar(sm, cax=cax,)
cbr.ax.tick_params(labelsize=200)
plt.tight_layout()
plt.savefig(os.path.join('out','fig.png'),format = 'png',bbox_inches='tight')
plt.show()