首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么在进行多个打印时,绘图图例会丢失标记?

为什么在进行多个打印时,绘图图例会丢失标记?
EN

Stack Overflow用户
提问于 2019-02-20 16:40:44
回答 1查看 174关注 0票数 4

一个简单的pandas图产生预期的输出,图例上有一个圆标记:

代码语言:javascript
运行
AI代码解释
复制
import io
import pandas
import matplotlib
import statsmodels
import matplotlib.pyplot
import statsmodels.tsa.api

cause = "Malignant neoplasms"
csv_data = """Year,CrudeRate
1999,197.0
2000,196.5
2001,194.3
2002,193.7
2003,192.0
2004,189.2
2005,189.3
2006,187.6
2007,186.9
2008,186.0
2009,185.0
2010,186.2
2011,185.1
2012,185.6
2013,185.0
2014,185.6
2015,185.4
2016,185.1
2017,183.9
"""

df = pandas.read_csv(io.StringIO(csv_data), index_col="Year", parse_dates=True)
df.plot(color="black", marker="o", legend=True)
matplotlib.pyplot.show()

请注意,"CrudeRate“图例项是一条带圆标记的直线,这是正确的。

但是,如果我为Holt线性指数平滑函数添加了一些额外的绘图,则图例将丢失圆形标记:

代码语言:javascript
运行
AI代码解释
复制
import io
import pandas
import matplotlib
import statsmodels
import matplotlib.pyplot
import statsmodels.tsa.api

cause = "Malignant neoplasms"
csv_data = """Year,CrudeRate
1999,197.0
2000,196.5
2001,194.3
2002,193.7
2003,192.0
2004,189.2
2005,189.3
2006,187.6
2007,186.9
2008,186.0
2009,185.0
2010,186.2
2011,185.1
2012,185.6
2013,185.0
2014,185.6
2015,185.4
2016,185.1
2017,183.9
"""

def ets_non_seasonal(df, color, predict, exponential=False, damped=False, damping_slope=0.98):
  fit = statsmodels.tsa.api.Holt(df, exponential=exponential, damped=damped).fit(damping_slope=damping_slope if damped else None)
  fit.fittedvalues.plot(color=color, style="--")
  title = "ETS(A,{}{},N)".format("M" if exponential else "A", "_d" if damped else "")
  forecast = fit.forecast(predict).rename("${}$".format(title))
  forecast.plot(color=color, legend=True, style="--")

df = pandas.read_csv(io.StringIO(csv_data), index_col="Year", parse_dates=True)
df.plot(color="black", marker="o", legend=True)
ets_non_seasonal(df, "red", 5, exponential=False, damped=False, damping_slope=0.98)
matplotlib.pyplot.show()

请注意,"CrudeRate“图例项只是一条没有圆标记的直线。

是什么原因导致第二个案例中的图例丢失了主图的圆形标记?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-20 17:24:32

matplotlib.pyplot.show()之前使用matplotlib.pyplot.legend()可以解决您的问题。

由于您绘制了3个图表,而据我所知,您只需要在图例中包含2个标签,因此我们将label='_nolegend_'传递给fit.fittedvalues.plot()。如果我们不这样做,我们将在图形图例中有一个值为None的第三个标签。

代码语言:javascript
运行
AI代码解释
复制
import io
import pandas
import matplotlib
import statsmodels
import matplotlib.pyplot
import statsmodels.tsa.api

cause = "Malignant neoplasms"
csv_data = """Year,CrudeRate
1999,197.0
2000,196.5
2001,194.3
2002,193.7
2003,192.0
2004,189.2
2005,189.3
2006,187.6
2007,186.9
2008,186.0
2009,185.0
2010,186.2
2011,185.1
2012,185.6
2013,185.0
2014,185.6
2015,185.4
2016,185.1
2017,183.9
"""

def ets_non_seasonal(df, color, predict, exponential=False, damped=False, damping_slope=0.98):
  fit = statsmodels.tsa.api.Holt(df, exponential=exponential, damped=damped).fit(damping_slope=damping_slope if damped else None)
  fit.fittedvalues.plot(color=color, style="--", label='_nolegend_')
  title = "ETS(A,{}{},N)".format("M" if exponential else "A", "_d" if damped else "")
  forecast = fit.forecast(predict).rename("${}$".format(title))
  forecast.plot(color=color, legend=True, style="--")

df = pandas.read_csv(io.StringIO(csv_data), index_col="Year", parse_dates=True)
df.plot(color="black", marker="o", legend=True)
ets_non_seasonal(df, "red", 5, exponential=False, damped=False, damping_slope=0.98)
matplotlib.pyplot.legend()
matplotlib.pyplot.show()

另外,为了使您更容易编写代码,作为跟随import matplotlib.pyplot as plt导入matplotlib.pyplot是一种很好的实践。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54791323

复制
相关文章
python2中为什么在进行类定义时最好
Person类很明显能够看出区别,不继承object对象,只拥有了doc , module 和 自己定义的name变量, 也就是说这个类的命名空间只有三个对象可以操作. Animal类继承了object对象,拥有了好多可操作对象,这些都是类中的高级特性。
py3study
2020/01/09
1.2K0
在Python中使用Matplotlib画多个绘图,so easy!
Python的Matplotlib库是使用最广泛的数据可视化库之一。使用Matplotlib,可以使用各种图表类型(包括折线图、条形图、饼图和散点图)绘制数据。
fanjy
2022/01/07
7.6K0
在Python中使用Matplotlib画多个绘图,so easy!
PostgreSQL在进行除法时要注意
数据库的行为给用户带来了诸多不便,例如1除以2,如果是整型除法会得到0,然而用户可能要的是0.5。
翎野君
2023/09/06
6330
跟着nature communications学绘图之小提琴图添加显著性标记
❝本节来继续进行数据复现绘制小提琴图并添加显著性标记,下面通过一个小例子来进行展示; ❝A highly conserved core bacterial microbiota with nitrogen-fixation capacity inhabits the xylem sap in maize plants ❞ 往期内容 加载R包 library(tidyverse) library(magrittr) 定义颜色 col=c("#1F78B4","#33A02C","#FB9A99","#
R语言数据分析指南
2022/09/21
1.2K0
跟着nature communications学绘图之小提琴图添加显著性标记
打印标签时如何解决打印偏移
我们在打印标签时,使用的纸张一般都是不干胶卷纸,这样的卷纸又有单排、双排、三排和四排的规格。这些不同规格的标签纸在条码打印中经常会出现打印偏移的问题,甚至会跳纸,遇到这样的情况该如何调整呢?小编下面详细介绍。
神奇像素科技
2021/11/24
2.3K0
打印标签时如何解决打印偏移
Double为什么会丢失精度
在工作中,谈到有小数点的加减乘除都会想到用BigDecimal来解决,但是有很多人对于double或者float为啥会丢失精度一脸茫然。还有BigDecimal是怎么解决的?话不多说,我们开始。
用户4283147
2022/10/08
2.4K0
Double为什么会丢失精度
Stack Overflow在成长时想要成为什么?
在实际的现实生活中,我有时会被别人问到我为谋生到底在做什么事情,这是我思考15秒后的回答:
致Great
2018/12/12
7400
在 Hexo 页面中嵌入多个 geogebra 动态图
geogebra 动态图可以在网页中显示数学公式,本文记录显示多个geogebra的方法。 实现原理 需要在 hexo 中可以嵌入 geogebra 图像 在 script 语句中建立多个 GGBApplet 对象 在 window.onload 函数中调用多个函数 实现方法 引入 js 文件 本地文件 <script src="/vvd_js/deployggb.js"></script> //路径指向自己建立的js文件 官网文件 <script src="https://cdn.geogebr
为为为什么
2022/08/05
2K0
在 Hexo 页面中嵌入多个 geogebra 动态图
利用Canvas进行网上绘图
HTML5 中的元素用于图形的绘制,通过脚本 (通常是JavaScript)来完成。它被称为“网页中的画布”,有了这个画布便可以轻松的在网页中绘制图形、文字、图片等。
算法与编程之美
2020/04/15
2K0
img图片丢失后默认图
我们在使用img标签时经常会遇到图片丢失等情况,我们可以给图片设置一个默认图 写法如下: <img src onerror="this.src='https://waibi.oss-cn-chengdu.aliyuncs.com/2020-06-01/head.jpg'" /> 这时候我们并没有给src属性赋值,导致触发onerror事件,执行了其中的js 当然如果我们是正常的图片,是无影响的
阿超
2022/08/21
6760
img图片丢失后默认图
密度图及山脊图绘图基础
Seaborn 的 kdeplot() 函数是 Python 中绘制密度图的方式之一,Matplotlib 在现阶段则没有具体的绘制密度图的函数,一般是结合 Scipy 库中的 gaussian_kde() 函数结果进行绘制。
timerring
2023/10/13
6240
密度图及山脊图绘图基础
一图入门Matplotlib绘图
Matplotlib是Python里可视化的基础包,可以很方便地绘制二维,三维的图表,作图风格接近MATLAB,所以称为matplotlib。使用简单的语句就能绘制漂亮的图形。本篇我们来学习matplotlib图表的组成元素。常用的一些绘图组件和概念已经展示在了文章开始的图中。使用简单的API就可以将该图绘制出来。结合图形,我们先解释一些概念和基础API,最后使用完整的代码绘制这幅图。后台回复“绘图”获取本文完整代码。
超哥的杂货铺
2020/07/06
9510
matplotlib 设置绘图时显示中文
matplotlib绘图时,经常会遇到中文字体显示为方块的问题。网上有很多解决方案,比较普遍的是在代码里增加下面两行。
超哥的杂货铺
2020/07/28
1.1K0
Matlab绘图-详细全面(图)
强大的绘图功能是Matlab的特点之一,Matlab提供了一系列的绘图函数,用户不需要过多的考虑绘图的细节,只需要给出一些基本参数就能得到所需图形,这类函数称为高层绘图函数。此外,Matlab还提供了直接对图形句柄进行操作的低层绘图操作。这类操作将图形的每个图形元素(如坐标轴、曲线、文字等)看做一个独立的对象,系统给每个对象分配一个句柄,可以通过句柄对该图形元素进行操作,而不影响其他部分。
全栈程序员站长
2022/09/07
2.8K0
R绘图|时间热图
在徐凌老师的 Nat Com 文章 Genome-resolved metagenomics reveals role of iron metabolism in drought-induced rhizosphere microbiome dynamics 中有这么一张补充图,介绍了本研究中涉及到的处理和取样的时间线。
小汪Waud
2023/10/24
2250
R绘图|时间热图
进阶版—doplot可视化多个单细胞亚群的多个标记基因
如果你不知道 basic.sce.pbmc.Rdata 这个文件如何得到的,麻烦自己去跑一下 可视化单细胞亚群的标记基因的5个方法,自己 save(pbmc,file = 'basic.sce.pbmc.Rdata') ,我们后面的教程都是依赖于这个文件哦!
生信技能树jimmy
2021/05/18
6.9K0
进阶版—doplot可视化多个单细胞亚群的多个标记基因
扫码打印新的实现方法(打印时输入)
打印时输入的是Label mx 条码软件的文字、条码、二维码共有属性,实现扫描一个条码,打印一个新标签,常用于重新贴码的包装箱或产品贴。下图为文字、条码、二维码的“打印时输入”属性设置:
用户6708611
2023/07/05
4770
扫码打印新的实现方法(打印时输入)
2019-7-24-为啥在Code Behind进行RelativeSource的binding会丢失
不知道是不是有小伙伴遇到过这样的情况。当我们尝试将一个RelativeSource从xaml转到code behind时,原本好好的binding表达式居然出现binding错误。
黄腾霄
2020/06/10
6470
这些绘图细节(字体、线类型、标记等)让你的论文配图耳目一新
今天这篇推文,小编就对Python-matplotlib的一些基本绘图样式(字体、线类型、标记等)进行汇总统计,希望对小伙伴们有所帮助。主要内容如下:
DataCharm
2021/07/29
5930
点击加载更多

相似问题

在R中打印多个绘图时更改绘图大小

20

用Live图对多个子图进行实时绘图

10

为什么在使用展开图进行处理时不显示标记?

11

为什么EventTarget子类实例会丢失它们的名称?

19

在单循环中使用子图对多个图形进行绘图

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文