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获取指定目录下所有文件名列表的方法
May 20 Python
Tensorflow中的placeholder和feed_dict的使用
Jul 09 Python
python 构造三维全零数组的方法
Nov 12 Python
用Python实现数据的透视表的方法
Nov 16 Python
python爬取微信公众号文章的方法
Feb 26 Python
使用django的objects.filter()方法匹配多个关键字的方法
Jul 18 Python
Anaconda之conda常用命令介绍(安装、更新、删除)
Oct 06 Python
django使用xadmin的全局配置详解
Nov 15 Python
Python可变对象与不可变对象原理解析
Feb 25 Python
如何在windows下安装Pycham2020软件(方法步骤详解)
May 03 Python
Python如何批量生成和调用变量
Nov 21 Python
代码复现python目标检测yolo3详解预测
May 06 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
什么是MVC,好东西啊
2007/05/03 PHP
php生成N个不重复的随机数实例
2013/11/12 PHP
基于php判断客户端类型
2016/10/14 PHP
PHP+jquery+CSS制作头像登录窗(仿QQ登陆)
2016/10/20 PHP
针对thinkPHP5框架存储过程bug重写的存储过程扩展类完整实例
2018/06/16 PHP
PHP7匿名类的用法示例
2019/04/05 PHP
javascript下string.format函数补充
2010/08/24 Javascript
键盘上一张下一张兼容IE/google/firefox等浏览器
2014/01/28 Javascript
seajs中模块的解析规则详解和模块使用总结
2014/03/12 Javascript
javascript中数组的多种定义方法和常用函数简介
2014/05/09 Javascript
让JavaScript的Alert弹出框失效的方法禁止弹出警告框
2014/09/03 Javascript
jQuery实现dialog设置focus焦点的方法
2015/06/10 Javascript
css如何让浮动元素水平居中
2015/08/07 Javascript
JQuery菜单效果的两个实例讲解(3)
2015/09/17 Javascript
JS中创建函数的三种方式及区别
2016/03/13 Javascript
微信小程序教程系列之视图层的条件渲染(10)
2017/04/19 Javascript
详解node中创建服务进程
2017/05/09 Javascript
vue-cli构建项目使用 less的方法
2017/10/04 Javascript
解决微信小程序云开发中获取数据库的内容为空的方法
2019/05/15 Javascript
多种类型jQuery网页验证码插件代码实例
2021/01/09 jQuery
[02:39]我与DAC之Newbee.Moogy:从论坛到TI
2018/03/26 DOTA
Python实现的拟合二元一次函数功能示例【基于scipy模块】
2018/05/15 Python
python 中的paramiko模块简介及安装过程
2020/02/29 Python
Matplotlib animation模块实现动态图
2021/02/25 Python
使用CSS3创建动态菜单效果
2015/07/10 HTML / CSS
丝芙兰波兰:Sephora.pl
2018/03/25 全球购物
澳大利亚制造的蜡烛和扩散器:Glasshouse Fragrances
2018/05/20 全球购物
诺心蛋糕官网:LE CAKE
2018/08/25 全球购物
技术比武方案
2014/05/19 职场文书
关于护士节的演讲稿
2014/05/26 职场文书
创建文明城市标语
2014/06/16 职场文书
新学期开学标语
2014/06/30 职场文书
分居协议书范本(律师见证版)
2014/11/26 职场文书
2015年全国保险公众宣传日活动方案
2015/05/06 职场文书
小学班主任培训心得体会
2016/01/07 职场文书
vue组件的路由高亮问题解决方法
2021/05/11 Vue.js