当前位置: 首页 > news >正文

app在线制作网站seo课程培训机构

app在线制作网站,seo课程培训机构,宁夏网站建设多少钱,桂林分销网站开发Matplotlib实现Label及Title都在下方的最佳姿势 1. 问题背景2. 基本思想(可以不看)3. 方法封装4. 调用实例5. 总结6. 起飞 1. 问题背景 用python绘制下面这种图的时候,一般用xlable作为子图的标题,这是因为plt.title()方法绘制的…

Matplotlib实现Label及Title都在下方的最佳姿势

    • 1. 问题背景
    • 2. 基本思想(可以不看)
    • 3. 方法封装
    • 4. 调用实例
    • 5. 总结
    • 6. 起飞

1. 问题背景

python绘制下面这种图的时候,一般用xlable作为子图的标题,这是因为plt.title()方法绘制的标题在图的上方,与latex默认子图的标题不同。那么,在这种情况下,duplication ratio (%)该如何显示呢?
在这里插入图片描述
一个最简单的方案,在上图中,使用plt.text()绘制文字,利用labelpad把xlable向下移动。

plt.text(0.5, -0.27, "duplication ratio (%)", ..., fontsize = 6, transform=subfig.transAxes)
plt.xlable("(a) ...", lablepad = 8, fontsize = 8)

可是这种方法需要不断调整plt.text传入的参数,使得textxticksxlable中间(不然很丑),非常之麻烦。

2. 基本思想(可以不看)

可以计算xlabel的上坐标以及xticks的下坐标,然后就可自动计算二者中心坐标,就可以自动居中绘制text了。

3. 方法封装

首先封装一个方法,其中exp代表xticks的解释(例如:duplication ratio (%)),title通过xlable展示出来

def add_explanation_and_title(fig, ax: Axes, exp, title, title_pad=10, title_fontsize=8, exp_fontsize=6):lable_pad = title_padax.set_xlabel(title, fontsize=title_fontsize, labelpad=lable_pad) return [exp, title, title_pad, title_fontsize, exp_fontsize]

接着写一个关键函数用来计算xlablexticks的距离,获取相应距离的函数主要通过get_window_extent()方法获取

def adjust_explanation(fig, axes, context):exp, title, title_pad, title_fontsize, exp_fontsize = contextfig.savefig("./temp.pdf", bbox_inches='tight', pad_inches=0)midpoint = (0.5, 0.5)for idx, ax in enumerate(axes):xtick_label = ax.get_xticklabels()[0]label_bbox1 = xtick_label.get_window_extent()# print(label_bbox1)figure_pos1 = label_bbox1.transformed(ax.transAxes.inverted())# Get the xlabel objectxlable = ax.xaxis.labellabel_bbox2 = xlable.get_window_extent()# print(label_bbox2)figure_pos2 = label_bbox2.transformed(ax.transAxes.inverted())midpoint = (0.5, (figure_pos1.y0 + figure_pos2.y1) / 2 + 0.08)print(midpoint)for idx, ax in enumerate(axes):ax.text(midpoint[0], midpoint[1], exp, ha='center', fontsize=exp_fontsize, transform=ax.transAxes)   

在上述代码中,fig.savefig非常重要,这是对当前画布做渲染绘制,得到相应的rendererrenderer用于为get_window_extent()提供参考。

考虑这样一种情况,我们会用plt.tight_layout()来紧缩画布,此时调用savefig便可以拿到绘制紧缩画布的renderer

4. 调用实例

fig = plt.figure(dpi = 300, figsize = (400, 500))
...
ax = fig.gca()
...
context = add_explanation_and_title(fig, ax, "duplication ratio (%)", "(a) Single Thread xxx")
...
# context保存了相关信息,用于后续adjust_explanation做参考
context = add_explanation_and_title(fig, ax, "duplication ratio (%)", "(b) Multi Thread xxx")
...
plt.tight_layout()
# 放在plt.tight_layout()后,通过savefig获取画布renderer,并
# 调整exp的最终坐标予以绘制
adjust_explanation(fig, fig.axes, context)
plt.savefig("xxx.pdf")

5. 总结

其实很难想象Matplotlib一直没有一个类似的库来支持以上操作。现有的,将title放到下面的方法只有类似如下方法:

plt.title('Scatter plot pythonspot.com', y=-0.01)

但这种方法导致对坐标的解释文字无法很好适配。另一种方案,即背景中的方案,也需要繁琐的适配。本文给出了一种自动化方案,希望能对科研作图有所帮助。

6. 起飞

OK,到这里就可以起飞了🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫

http://www.khdw.cn/news/51737.html

相关文章:

  • 行业网站建设价格重庆网站建设外包
  • 电子商务网络营销是干嘛的seo相关ppt
  • 做网站赚钱靠谱吗买友情链接有用吗
  • 上海简约网站建设公司互联网+营销策略怎么写
  • 建新网站开发流程图今日国内新闻大事件
  • 慈溪专业做网站公司网站优化 推广
  • 书店网站的建设aso优化方法
  • 什么APP可以做网站网站收录提交入口
  • 网站域名的密码全国疫情实时资讯
  • 欧美服装网站模板免费顶级域名注册
  • tuzicms做企业手机网站如何品牌软文范文
  • 网站免费打包ios沈阳seo关键词
  • 做简历比较好的网站seo词库排行
  • 深圳人为什么不想去龙岗谷歌官方seo入门指南
  • 做网站找酷万软文推广是什么意思
  • 做哪种网站能赚到钱网络优化公司
  • ftp上传网站步骤一键开发小程序
  • 卡片式网站企业如何进行搜索引擎优化
  • 表白网站怎样做有创意视频剪辑培训班一般学费多少
  • 郑州知名做网站公司有哪些江苏百度推广代理商
  • 做58同城这样的网站有哪些广东免费网络推广软件
  • 专门做问卷的网站网络营销出来可以干什么工作
  • 手机网站电话漂浮代码互联网优化是什么意思
  • 腾讯公众号小程序西藏自治区seo 标题 关键词优化
  • 网站开发 先做前端吗企业品牌推广方案
  • 衡水网站建设的地方网站的优化
  • 网络推广公司经营范围廊坊首页霸屏优化
  • 做网站用的主机信息推广平台有哪些
  • 做网站选哪家公司好如何建立独立网站
  • 网站 app 哪个先做深圳营销推广引流公司