python画图常规设置方式


Posted in Python onMarch 05, 2020

python绘图的包大家应该不会陌生,但是,对图的常规设置不一定会知道(其实自己也是才知道的),比如:坐标轴的字体大小、颜色设置;标题的字体颜色大小设置;线的粗细、颜色;图片风格的设置等。了解这些常规设置必定会让图片更加美观。

下面就具体来说说matplotlib中有哪些常规设置。

我主要总结了这几个函数:

plt.style.use()函数;可以对图片的整体风格进行设置。可以通过plt.style.availabel知道一共有多少种主题。

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import matplotlib as mpl
print plt.style.availabel

python画图常规设置方式

我们试用其中两个主题。

plt.style.use("fivethirtyeight")
data = np.random.randn(50)
plt.scatter(range(50), data)

python画图常规设置方式

with plt.style.context(('dark_background')):
  plt.plot(np.sin(np.linspace(0, 2 * np.pi)), 'r-o') # "r-o"表示红色的点用线连接起来。
plt.show()

python画图常规设置方式

mpl.rcParams()函数;这个函数可以设置图片的坐标轴以及标题的字体大小、颜色、宽度等。同时,也可以用mpl.rcParams.keys()进行查看有哪些设置。

python画图常规设置方式

mpl.rcParams['xtick.labelsize'] = 16
mpl.rcParams["ytick.color"] = 'b'
plt.plot(range(50), data, 'g^')
plt.show()

python画图常规设置方式

这张图就通过rcParams()函数设置了y轴的字体颜色,x轴的字体大小。同时,将点的marker变成了三角形、颜色变为了绿色。

mpl.rc()函数;它可以用来设置线的粗细、风格、颜色等。

mpl.rc('lines', linewidth=4, color='r', linestyle='-.')
plt.plot(data)

python画图常规设置方式

fontdict()函数;也可以来办同样的事情。

font = {'family' : 'monospace',
    'weight' : 'bold',
    'size'  : 'larger',
    'color' : "r"
    }
plt.scatter(range(50), data)
plt.xlabel("number", fontdict=font)

python画图常规设置方式

font()字典中主要存在这么几类键:

font.family ;一共有5种设置: serif sans-serif cursive antasy monospace

font.style ;一种有3种设置:normal italic oblique

font.variant ;一共有2种设置:normal or small-caps

font.weight ;一共有4种设置:normal, bold, bolder, lighter

font.stretch ;一共有13种设置:

ultra-condensed, extra-condensed, condensed, semi-condensed, normal, semi-expanded, expanded, extra-expanded, ultra-expanded, wider, and narrower. font.size ;默认值是10pt

plt.setp()函数;也是可以设置线的粗细以及颜色,还可以设置坐标轴的方向,位置。

例如:

setp(lines, 'linewidth', 2, 'color', 'r')

借用帮助文档上的一个例子:

import numpy as np
import matplotlib.pyplot as plt
data = {'Barton LLC': 109438.50,
    'Frami, Hills and Schmidt': 103569.59,
    'Fritsch, Russel and Anderson': 112214.71,
    'Jerde-Hilpert': 112591.43,
    'Keeling LLC': 100934.30,
    'Koepp Ltd': 103660.54,
    'Kulas Inc': 137351.96,
    'Trantow-Barrows': 123381.38,
    'White-Trantow': 135841.99,
    'Will LLC': 104437.60}
group_data = list(data.values())
group_names = list(data.keys())
group_mean = np.mean(group_data)
fig, ax = plt.subplots()
ax.barh(group_names, group_data)
labels = ax.get_xticklabels()
plt.setp(labels, rotation=45, horizontalalignment='right')
ax.set(xlim=[-10000, 140000], xlabel='Total Revenue', ylabel='Company',
    title='Company Revenue')

python画图常规设置方式

可以看到x轴坐标斜向45°旋转了,整个图片变得更加美观了。为了对数据更加一步分析,做下面操作:

python画图常规设置方式

def currency(x, pos):
  """The two args are the value and tick position"""
  if x >= 1e6:
    s = '${:1.1f}M'.format(x*1e-6)
  else:
    s = '${:1.0f}K'.format(x*1e-3)
  return s
formatter = FuncFormatter(currency)
fig, ax = plt.subplots(figsize=(6, 8))
ax.barh(group_names, group_data)
labels = ax.get_xticklabels()
plt.setp(labels, rotation=45, horizontalalignment='right')
 
ax.set(xlim=[-10000, 140000], xlabel='Total Revenue', ylabel='Company',
    title='Company Revenue')
ax.xaxis.set_major_formatter(formatter)


fig, ax = plt.subplots(figsize=(8, 8))
ax.barh(group_names, group_data)
labels = ax.get_xticklabels()
plt.setp(labels, rotation=45, horizontalalignment='right')
 
# 以所有收益的平均值画一条垂直线,看哪些公司是超越平均收益的
ax.axvline(group_mean, ls='--', color='r')
 
# 标注新成立的公司
for group in [3, 5, 8]:
  ax.text(145000, group, "New Company", fontsize=10,
      verticalalignment="center")
 
# 将标题移动一点,与图片保持一点距离。
ax.title.set(y=1.05)
ax.set(xlim=[-10000, 140000], xlabel='Total Revenue', ylabel='Company',
    title='Company Revenue')
ax.xaxis.set_major_formatter(formatter)
ax.set_xticks([0, 25e3, 50e3, 75e3, 100e3, 125e3])
plt.show()

python画图常规设置方式

现在好了,可以直观的看出哪些公司是新成立得,同时哪些公司的收益是超越平均水平的。对之后的数据分析和统计都是有非常大的帮助的。

以上这篇python画图常规设置方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python关键字and和or用法实例
May 28 Python
Python HTTP客户端自定义Cookie实现实例
Apr 28 Python
python机器人行走步数问题的解决
Jan 29 Python
浅谈pandas用groupby后对层级索引levels的处理方法
Nov 06 Python
python os.fork() 循环输出方法
Aug 08 Python
python super的使用方法及实例详解
Sep 25 Python
Python自动化完成tb喵币任务的操作方法
Oct 30 Python
Python3.7+tkinter实现查询界面功能
Dec 24 Python
使用keras实现孪生网络中的权值共享教程
Jun 11 Python
python修改微信和支付宝步数的示例代码
Oct 12 Python
Python 3.9的到来到底是意味着什么
Oct 14 Python
python使用pywinauto驱动微信客户端实现公众号爬虫
May 19 Python
解决python -m pip install --upgrade pip 升级不成功问题
Mar 05 #Python
python入门之井字棋小游戏
Mar 05 #Python
解决Python图形界面中设置尺寸的问题
Mar 05 #Python
python实现简单井字棋小游戏
Mar 05 #Python
python GUI编程(Tkinter) 创建子窗口及在窗口上用图片绘图实例
Mar 04 #Python
Python: tkinter窗口屏幕居中,设置窗口最大,最小尺寸实例
Mar 04 #Python
关于Python Tkinter Button控件command传参问题的解决方式
Mar 04 #Python
You might like
ThinkPHP之A方法实例讲解
2014/06/20 PHP
php实现遍历目录并删除指定文件中指定内容
2015/01/21 PHP
php+ajax实现无刷新分页
2015/11/18 PHP
讲解WordPress开发中一些常用的debug技巧
2015/12/18 PHP
关于php支持的协议与封装协议总结(推荐)
2017/11/17 PHP
Laravel 微信小程序后端实现用户登录的示例代码
2019/11/26 PHP
JavaScript弹簧振子超简洁版 完全符合能量守恒,胡克定理
2009/10/25 Javascript
jQuery maxlength文本字数限制插件
2010/04/16 Javascript
Extjs grid添加一个图片状态或者按钮的方法
2014/04/03 Javascript
jquery插件之文字间歇自动向上滚动效果代码
2016/02/25 Javascript
AngularJS 中文API参考手册
2016/07/28 Javascript
基于MVC5和Bootstrap的jQuery TreeView树形控件(二)之数据支持json字符串、list集合
2016/08/11 Javascript
微信小程序 swiper组件轮播图详解及实例
2016/11/16 Javascript
jQuery实现简单的下拉菜单导航功能示例
2017/12/07 jQuery
如何获取TypeScript的声明文件.d.ts
2018/05/01 Javascript
浅谈Node.js 沙箱环境
2018/05/15 Javascript
实例详解Vue项目使用eslint + prettier规范代码风格
2018/08/20 Javascript
Node.js折腾记一:读指定文件夹,输出该文件夹的文件树详解
2019/04/20 Javascript
监控微信小程序中的慢HTTP请求过程详解
2019/07/05 Javascript
基于vue-draggable 实现三级拖动排序效果
2020/01/10 Javascript
Vue3配置axios跨域实现过程解析
2020/11/25 Vue.js
[50:15]VP vs Mineski 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
pycharm 使用心得(九)解决No Python interpreter selected的问题
2014/06/06 Python
python比较两个列表是否相等的方法
2015/07/28 Python
python PyTorch预训练示例
2018/02/11 Python
python DataFrame 取差集实例
2019/01/30 Python
Python帮你识破双11的套路
2019/11/11 Python
Django vue前后端分离整合过程解析
2020/11/20 Python
python爬虫用request库处理cookie的实例讲解
2021/02/20 Python
瑞贝卡·明可弗包包官网:Rebecca Minkoff
2016/07/21 全球购物
兰蔻英国官网:Lancome英国
2019/04/30 全球购物
教师旷工检讨书
2014/01/18 职场文书
迟到检讨书500字
2014/02/05 职场文书
酒店员工职业生涯规划
2014/02/25 职场文书
小学生学习保证书
2015/02/26 职场文书
在redisCluster中模糊获取key方式
2021/07/09 Redis