Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Geopandas中编辑颜色栏(图例)?_Python_Pandas_Visualization_Geopandas_Choropleth - Fatal编程技术网

Python 在Geopandas中编辑颜色栏(图例)?

Python 在Geopandas中编辑颜色栏(图例)?,python,pandas,visualization,geopandas,choropleth,Python,Pandas,Visualization,Geopandas,Choropleth,在我正在创建的geopandas world choropleth中,我想用颜色条编辑多个内容。也就是大小(以便大致匹配地图本身)、文本大小(当前显示的文本太小),我还想给它添加一个标签。从阅读有关geopandas的内容来看,似乎没有简单的方法可以明确地做到这一点,因此我想知道是否有人可以提供任何解决方法?任何帮助都将不胜感激 这是我目前正在使用的代码(在某些情况下,中间部分只是按国家将列表与数字合并到框架中,我将其用作着色的基础) 这里的理想解决方案是保持图例选项的颜色,指定大小和文本大小,

在我正在创建的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()