这是我尝试将条形图的图例从矩形更改为方形:

import matplotlib.patches as patches

rect1 = patches.Rectangle((0,0),1,1,facecolor='#FF605E')

rect2 = patches.Rectangle((0,0),1,1,facecolor='#64B2DF')

plt.legend((rect1, rect2), ('2016', '2015'))

但是当我绘制这个时,我仍然会看到矩形而不是正方形:

有关如何做到这一点的任何建议?

我尝试了@ImportanceOfBeingErnest和@furas提供的两种解决方案,结果如下:

@ ImportanceOfBeingErnest的解决方案是最容易做到的:

plt.rcParams['legend.handlelength'] = 1

plt.rcParams['legend.handleheight'] = 1.125

结果如下:

我的最终代码如下所示:

plt.legend((df.columns[1], df.columns[0]), handlelength=1, handleheight=1) # the df.columns = the legend text

@ furas的解决方案产生了这个,我不知道为什么文本远离矩形,但我确信差距可以以某种方式改变:

最佳答案:

Matplotlib提供rcParams

legend.handlelength : 2. # the length of the legend lines in fraction of fontsize

legend.handleheight : 0.7 # the height of the legend handle in fraction of fontsize

您可以在通话中将其设置为plt.legend()

plt.legend(handlelength = 1,handleheight = 1)

或者在脚本开头使用rcParams

import matplotlib

matplotlib.rcParams['legend.handlelength'] = 1

matplotlib.rcParams['legend.handleheight'] = 1

不幸的是,提供相等的句柄长度= 1,handleheight = 1将不会提供完美的矩形.似乎handlelength = 1,handleheight = 1.125将完成这项工作,但这可能取决于所使用的字体.

另一种方法是,如果要使用代理艺术家,可以使用plot / scatter方法中的方形标记.

bar1 = plt.plot([], marker="s", markersize=15, linestyle="", label="2015")

并将其提供给图例,图例(手柄= [bar1]).使用此方法需要设置matplotlib.rcParams [‘legend.numpoints’] = 1,否则图例中将出现两个标记.

以下是两种方法的完整示例

import matplotlib.pyplot as plt

plt.rcParams['legend.handlelength'] = 1

plt.rcParams['legend.handleheight'] = 1.125

plt.rcParams['legend.numpoints'] = 1

fig, ax = plt.subplots(ncols=2, figsize=(5,2.5))

# Method 1: Set the handlesizes already in the rcParams

ax[0].set_title("Setting handlesize")

ax[0].bar([0,2], [6,3], width=0.7, color="#a30e73", label="2015", align="center")

ax[0].bar([1,3], [3,2], width=0.7, color="#0943a8", label="2016", align="center" )

ax[0].legend()

# Method 2: use proxy markers. (Needs legend.numpoints to be 1)

ax[1].set_title("Proxy markers")

ax[1].bar([0,2], [6,3], width=0.7, color="#a30e73", align="center" )

ax[1].bar([1,3], [3,2], width=0.7, color="#0943a8", align="center" )

b1, =ax[1].plot([], marker="s", markersize=15, linestyle="", color="#a30e73", label="2015")

b2, =ax[1].plot([], marker="s", markersize=15, linestyle="", color="#0943a8", label="2016")

ax[1].legend(handles=[b1, b2])

[a.set_xticks([0,1,2,3]) for a in ax]

plt.show()

生产

标签:python,matplotlib

python怎么定义正方形函数_python – Matplotlib自定义图例以显示正方形而不是矩形...相关推荐

  1. python怎么定义一个函数_Python定义一个函数的方法

    Python函数的定义 定义函数,也就是创建一个函数,可以理解为创建一个具有某些用途的工具.定义函数需要用 def 关键字实现,具体的语法格式如下: def 函数名(形参列表): //由零条到多条可执 ...

  2. python plt legend并排_【Matplotlib】图例分开显示

    作图时图例往往都会出现一个图例框内,如果需要不同类型的图例分别显示,比如显示两个图例. 基本上,出现两个图例的话,需要调用两次 legend .第一次调用,你需要将图例保存到一个变量中,然后保存下来. ...

  3. python绘制散点图的函数_python matplotlib更新函数的散点图

    有几种方法可以对matplotlib图进行动画处理.在下文中,我们将使用散点图查看两个最小示例. (a)使用交互式模式plt.ion() 要进行动画制作,我们需要一个事件循环.获取事件循环的一种方法是 ...

  4. python调用自己写的函数_python调用自定义函数的实例操作

    在python中,想要调用自定义函数必须先声明,然后才能调用.使用函数时,只要按照函数定义的形式,向函数传递必需的参数,就可以调用函数完成相应的功能或者获得函数返回的处理结果. (1)声明函数 pyt ...

  5. python中如何自定义函数_Python中自定义函数的教程

    在Python中,定义一个函数要使用def语句,依次写出函数名.括号.括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回. 我们以自定义一个求绝对值的my_abs函数 ...

  6. python 类函数调用外部函数_python类中调用外部函数,python 函数中 定义类

    Q1:python函数里的数组如何在函数外调用出来 使用返回值的方法有两种: 可以直接把调用的函数作为变量使用 可以用调用函数给一个变量赋值 第一种情况见如下例子: l = [1,2,3,4,5] d ...

  7. python神秘的魔法函数_Python魔法函数

    1.什么是魔法函数 魔法函数即Python类中以__(双下划线)开头,以__(双下划线)结尾的函数,Python提供的函数,可让咱们随意定义类的特性 示例: class Company(object) ...

  8. python中的参数函数_python中函数与参数的简介

    函数 函数就是具有某个具体功能的工具 而使用用函数能提供开发效率,减少代码冗余,提高程序的扩展性. 在Python中,函数有五大要点:分别是def.函数名.函数体.参数.返回值,以及两个英文版符号,分 ...

  9. python中什么叫函数_Python 基础起步 (十) 什么叫函数?

    Python 函数 大家好,这一期让我们来看看Python中比较核心的知识点:函数(也叫方法),那么到底什么是一个函数呢?先让我引入一个官方一点的定义: 函数是对程序逻辑进行结构化或者过程化的一种编程 ...

最新文章

  1. “编程能力差的程序员,90%会输在这点上”谷歌AI专家:其实都是瞎努力
  2. poj1603(Flody算法)
  3. java存储整数_关于数组:Java:存储大量整数的最佳数据类型是什么?
  4. 系列笔记 | 深度学习连载(2):梯度下降
  5. 《Java和Android开发实战详解》——1.2节Java基础知识
  6. 2018 GDCPC 省赛总结
  7. nginx虚拟目录支持PHP,nginx“虚拟目录”不支持php的解决方法
  8. grails安装部署_grails中文版
  9. c语言删除结点,C语言在链表中删除结点
  10. (20)FPGA数据接口同步化
  11. [转载] 【RTTmicropython教程】玩转 Web 服务器
  12. 【推荐系统】音乐推荐系统02
  13. intel服务器最新主板芯片组,intel主板芯片组的介绍大全
  14. Windows10家庭版完美修改系统用户名
  15. LeetCode-347. Top K Frequent Elements [C++][Java]
  16. 制作html语言网站全攻略,(网页制作HTML代码全攻略.doc
  17. anaconda安装支持mpi并行化的h5py
  18. zabbix报错排错大全
  19. Linux下AndroidNDK r7环境配置与NDK入门
  20. nginx逻辑指令笔记(if等)

热门文章

  1. php流程控制作业题,php流程控制
  2. text 两端对齐 小程序_小程序实现文字两端对齐
  3. Elsevier LaTeX时间-年份(author-year)两种引用格式
  4. PyMC3实现贝叶斯神经网络
  5. OpenCV学习笔记(七):形态学morpholgy(1):腐蚀/膨胀:enrode(),dilate()
  6. 相关与卷积、各种误差
  7. python实现可扩容队列
  8. 耗时n年,38页《数据仓库知识体系.pdf》(数据岗位必备)
  9. STL bitset用法总结
  10. linux用u盘上传文件,linux如何挂载U盘和文件系统(或需要用到).doc