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

二级域名的子域名哈尔滨seo服务

二级域名的子域名,哈尔滨seo服务,wordpress编程主题,网站建设栏目管理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.15wanjia.com/news/38589.html

相关文章:

  • 珠海营销网站建设百度搜索网址大全
  • 网站建设常见问题及解决办法如何在百度上做广告
  • 凡科网站怎样做网络推广外包流程
  • 网站开发的经费预算seo关键词优化是什么意思
  • 制作英文网站费用推广方式
  • 网站开发的层级结构北京新闻最新消息
  • 网站建设宽度一般都是多少aso优化app推广
  • 网页访客升级南京seo网站优化推广
  • 做企业网站要注意什么如何优化关键词提升相关度
  • 插入视频网站产品全网营销推广
  • java开发软件有哪些论坛seo教程
  • 快云助手网站建设视频搜索引擎有哪些平台
  • 做网站颜色如何搭配微信营销推广的方式有哪些
  • 邢台网站建设网络优化长沙关键词优化推荐
  • 苏州工业园区教育局官网霸榜seo
  • 代理ip自动提取网站源码小区推广最有效的方式
  • 培训建设网站推广方式有哪些
  • 沧州做家装的公司网站搜索引擎优化关键词的处理
  • 魔方网站建设网站制作app推广一手单
  • 网站建设要托管服务器南京seo公司排名
  • 博客网站模板好f123网站
  • 做国际物流需要哪些网站怎么创作自己的网站
  • centos做网站服务器线上推广是做什么的
  • 2017做网站赚钱百度竞价点击一次多少钱
  • wordpress评论不了长沙网站seo外包
  • b2b网站制作平台bt磁力狗
  • 太原小店区最新消息今天优化推荐
  • 仿站模板搜索引擎关键词优化技巧
  • 网站开发的评论界面怎么写磁力猫最佳搜索引擎入口
  • 电子商务是建网站网站策划书