plt绘图加图标_Matplotlib基础--自定义图标图例
图例可以为可视化赋予实际含义,为不同的图标元素附上明确说明。我们前面看到了一些简单的图例创建例子;本小节中我们来介绍一下在 Matplotlib 中自定义图例的位置和进行美化的方法。
可以使用plt.legend()函数来创建最简单的图例,这个函数能自动创建任何带有标签属性的图表元素的图例:
import matplotlib.pyplot asplt
plt.style.use('classic')
import numpyasnp
x= np.linspace(0, 10, 1000)
fig, ax=plt.subplots()
ax.plot(x, np.sin(x),'-b', label='Sine')
ax.plot(x, np.cos(x),'--r', label='Cosine')
ax.axis('equal')
leg=ax.legend();
plt.show()
但除此之外还有很多能自定义图例的方法。例如,我们可以指定图例位置并且去除边框:
ax.legend(loc='upper left', frameon=False)
fig
我们可以使用ncol属性设置图例中每行的列数:
ax.legend(frameon=False, loc='lower center', ncol=2)
fig
还可以使用圆角方框(fancybox)或者增加阴影,设置方框的透明度(alpha 值)或修改文字的边距:
ax.legend(fancybox=True, framealpha=1, shadow=True, borderpad=1)
fig
要获取更多 legend 函数的可用选项信息,请参考plt.legend的文档字符串。
选择设置图例的元素
正如我们前面例子所示,绘制的图例默认包括所有带标签的元素。如果这不是想要的效果,我们可以调整哪些元素和标签会出现在图例当中,这可以通过设置plot 函数或方法返回的对象实现。plt.plot函数能够同时产生多条折线,然后将这些线条的实例列表返回。将其中的部分实例传递到plt.legend()函数就能设置哪些线条会出现在图例中,再通过一个标签的列表指定图例的名称:
y = np.sin(x[:, np.newaxis] + np.pi * np.arange(0, 2, 0.5))
lines=plt.plot(x, y)
# lines是一个线条实例的列表
plt.legend(lines[:2], ['first', 'second']);
作者更加倾向于使用第一种方式,因为更加清晰。通过将标签应用在图表元素上,然后绘制到图例中:
plt.plot(x, y[:, 0], label='first')
plt.plot(x, y[:,1], label='second')
plt.plot(x, y[:,2:])
plt.legend(framealpha=1, frameon=True);
请注意默认情况下,legend 会忽略所有不带标签的元素。
散点大小的图例
某些情况下默认的图例不足以满足特定的可视化需求。例如,你在使用散点的大小来标记数据的某个特征,然后希望创建一个相应的图例。下面的例子是加州城市人口的散点图(你们可以用自己文件替换),我们使用散点的大小表现该城市的面积,散点的颜色来表现城市的人口数量(自然对数值)。我们希望使用一个图例来指明散点尺寸的比例,同时用一个颜色条来说明人口数量,我们可以通过自定义绘制一些标签数据来实现尺寸图例:
译者注:新版 Matplotlib 已经取消 aspect 参数,此处改为使用新的'scaled'参数调用 axis 函数。
import pandas aspd
cities= pd.read_csv(r'D:\python\Github学习材料\Python数据科学手册\data\california_cities.csv')
# 提取我们感兴趣的数据
lat, lon= cities['latd'], cities['longd']
population, area= cities['population_total'], cities['area_total_km2']
# 绘制散点图,使用尺寸代表面积,颜色代表人口,不带标签
plt.scatter(lon, lat, label=None,
c=np.log10(population), cmap='viridis',
s=area, linewidth=0, alpha=0.5)
plt.axis('scaled')
plt.xlabel('longitude')
plt.ylabel('latitude')
plt.colorbar(label='log$_{10}$(population)')
plt.clim(3, 7)
# 下面我们创建图例:
# 使用空列表绘制图例中的散点,使用不同面积和标签,带透明度for area in [100, 300, 500]:
plt.scatter([], [], c='k', alpha=0.3, s=area,
label=str(area) + 'km$^2$')
plt.legend(scatterpoints=1, frameon=False, labelspacing=1, title='City Area')
plt.title('California Cities: Area and Population');
之前的图例都关联着图表上的一些对象,因此如果我们需要展示图例的话我们首先需要绘制图表元素。在上例中,我们需要的图例对象(灰色圆圈)不在图表上,因此我们采用绘制空列表的方式将它们仿造在图表上(实际上图上没有点),但是还是需要注意,只有那些带标签的元素才会出现在图例中。
通过绘制空列表,我们创建了三个带标签的对象,然后就可以出现在图例当中,这个图例就能表示出有关城市面积的相关信息。这个策略在很多复杂可视化图表构建过程中都被用到。
最后我们注意到这个图表实际上是一个地理位置图表,如果我们能在上面绘制州界线或其他地图相关的元素的话,会更加清晰。Matplotlib 提供了一个 Basemap 额外工具集来实现这个目标。
多重图例
有时候我们可能需要在同一个图表维度中设计多个图例。不幸的是,Matplotlib 并没有提供很简单的方式实现:通过标准的legend接口,只能在整张图表上创建一个图例。如果你试图使用plt.legend()或ax.legend()创建第二个图例,那么第二条语句创建的图例会覆盖第一条语句创建的。我们只能通过从底层开始来创建一个新的图例 artist 这种方法来解决这个问题,然后使用ax.add_artist()的底层方法手动将第二个作者加到图表上:
fig, ax =plt.subplots()
lines=[]
styles= ['-', '--', '-.', ':']
x= np.linspace(0, 10, 1000)for i in range(4):
lines+= ax.plot(x, np.sin(x - i * np.pi / 2),
styles[i], color='black')
ax.axis('equal')
# 指定第一个图例的线条和标签
ax.legend(lines[:2], ['line A', 'line B'],
loc='upper right', frameon=False)
# 手动创建第二个图例,并将作者添加到图表中frommatplotlib.legend import Legend
leg= Legend(ax, lines[2:], ['line C', 'line D'],
loc='lower right', frameon=False)
ax.add_artist(leg);
plt.show()
上例展示了用来组成任何 Matplotlib 图表的底层 artist 对象的简单说明。如果你去查看ax.legend()的源代码(你可以通过 IPython 的ax.legend?帮助工具做到),你可以看到这个方法包含了用来构建合适Legend的 artist 对象的逻辑,构建的对象被保存在legend_属性当中,当绘制时被添加到图表上进行展示.
plt绘图加图标_Matplotlib基础--自定义图标图例相关推荐
- 百度地图Javascript使用海量点加载数据并自定义图标
** 百度地图Javascript使用海量点加载数据并自定义图标 由于数据量较大时使用Marker点在地图上标点会造成浏览器卡死,点聚合的形式可以解决数据量大浏览器卡死问题,但是移除点时点聚合不太好用 ...
- qss 更改图标_Qt实现自定义图标功能
Qt实现自定义图标功能 作者:hackett 微信公众号:加班猿 在上一节的基础上进行定义图标的功能 效果:要做的是应用的放大缩小.最小化功能,鼠标移动和点击图标变色 准备工作: 控件 ...
- u盘中的android文件夹图标不显示,U盘中文件夹怎么设置自定义图标而不变样
在U盘里面,装着各种各样的资料文件,除了文件夹外,还有不少的图标文件(如*.ico,*.exe等).U盘的文件夹的图标有时会随着文件夹的移动而变样或者失效,有什么办法可以将文件夹图标换成自定义图标而不 ...
- ionic自定义图标(ion-icon)
背景 ionic自带图标库有限,不能满足项目里面各种图标,需要自定义图标. 开始 下载图标库 从iconfont.cn上面搜索想要的图标,添加入库(也就是购物车那个图标) 添加到项目里面,一个项目肯定 ...
- 鼠标图标怎么自定义_苹果ios14怎么自定义图标 图标位置自由排列换风格教程
苹果ios14怎么自定义图标 图标位置自由排列换风格教程 iOS 14 发布后,自定义主屏幕图标成为了一种流行的趋势,一些用户通过「快捷指令」将默认的应用图标替换为自定义图标,然后将应用本来的图标隐藏 ...
- Echarts地图自定义图标Symbol同时动态更改图标进行切换显示
Echarts地图自定义图标Symbol同时动态更改图标进行切换显示 文章目录 0.前言 1.引用模块 2.界面设计 3.数据准备 4.实例地图 5.动态修改气泡图标 6.结束语 0.前言 实现的效果 ...
- GIS定位和自定义图标
开发工具与关键技术:VS软件,GIS定位和自定义图标 作者:陈隆 撰写时间:2020年05月02日 说到GIS可能很多人都很陌生吧,其实只有没接触过的就肯定是不知道这到底是什么来的,可能知道GPS的比 ...
- 如何调换手机桌面位置_苹果ios14怎么自定义图标 图标位置自由排列换风格教程...
苹果ios14怎么自定义图标 图标位置自由排列换风格教程 iOS 14 发布后,自定义主屏幕图标成为了一种流行的趋势,一些用户通过「快捷指令」将默认的应用图标替换为自定义图标,然后将应用本来的图标隐藏 ...
- element自定义图标;element自定义icon;element-ui自定义tab栏图标;
一.场景:element-ui本身提供了图标,但是不全面或者开发时候需要使用自定义图标展示.此时可以用到elemenUi的自定义图标.参考链接 二.html使用,和正常的element的 图标 i 标 ...
最新文章
- spring,springmvc,mybatis基本整合(一)--xml文件配置方式(1)
- iOS网络编程之Socket
- WinUI 3 Preview 3 发布了,再一次试试它的性能
- Tomcat学习笔记(一)
- 源码:Hadoop-3.0.3 启动过程中执行start-all.sh开始
- java api 获取jvm实例_JVMTI那些事——和Java相互调用
- R语言︱机器学习模型评价指标+(转)模型出错的四大原因及如何纠错
- Linux中mongodb定时远程备份
- ASP.Net七大内置对象 (整理的不错,转过来参考)
- PPT 字体的玩法(师从于珞珈老师)
- 【交换安全】DAI - Dynamic ARP Inspection 详解/arp欺骗/gratuitous arp
- 前台传递JSON数据,后台spring mvc如何接收数据
- 即使Windows DVD Maker不存在,如何在Windows 8上创建DVD-DVDStyler
- Image Segmentation Using Deep Learning: A Survery
- 宝塔面板FTP连接时“服务器发回了不可路由的地址。使用服务器地址代替。”
- KVM虚拟化产品-iVCS介绍
- java后台判断请求来自移动端访问还是PC端访问
- 服务器显示EE00,安装完成后,打开前台报错,后台显示不出验证码
- Airsim动态 | 安装ROS包装器(AirSim ROS Wrapper)
- 与波导分道扬镳后传音控股再谋借壳非洲之王欲在A股扬名