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 将字符串转换成字典dict
Mar 24 Python
python SSH模块登录,远程机执行shell命令实例解析
Jan 12 Python
简单实现Python爬取网络图片
Apr 01 Python
Python hashlib模块用法实例分析
Jun 12 Python
Python读写zip压缩文件的方法
Aug 29 Python
Python+selenium 获取浏览器窗口坐标、句柄的方法
Oct 14 Python
Django 对象关系映射(ORM)源码详解
Aug 06 Python
对Python 中矩阵或者数组相减的法则详解
Aug 26 Python
浅谈python之自动化运维(Paramiko)
Jan 31 Python
python实现输入三角形边长自动作图求面积案例
Apr 12 Python
python opencv 实现读取、显示、写入图像的方法
Jun 08 Python
python 实现表情识别
Nov 21 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
PHP获取网卡地址的代码
2008/04/09 PHP
PHP的范围解析操作符(::)的含义分析说明
2011/07/03 PHP
php求今天、昨天、明天时间戳的简单实现方法
2016/07/28 PHP
JQuery EasyUI 对话框的使用方法
2010/10/24 Javascript
主页面中的两个iframe实现鼠标拖动改变其大小
2013/04/16 Javascript
js调用后台servlet方法实例
2013/06/09 Javascript
js函数获取html中className所在的内容并去除标签
2013/09/08 Javascript
使用indexOf等在JavaScript的数组中进行元素查找和替换
2013/09/18 Javascript
js取模(求余数)隔行变色
2014/05/15 Javascript
深入理解JavaScript系列(29):设计模式之装饰者模式详解
2015/03/03 Javascript
Express的路由详解
2015/12/10 Javascript
JS组件Bootstrap Table使用实例分享
2016/05/30 Javascript
基于JavaScript实现屏幕滚动效果
2017/01/18 Javascript
zTree获取当前节点的下一级子节点数实例
2017/09/05 Javascript
微信小程序之自定义组件的实现代码(附源码)
2018/08/02 Javascript
js微信分享接口调用详解
2019/07/23 Javascript
[01:55]《走出家门看比赛》——DOTA2 2015国际邀请赛同城线下观战
2015/07/18 DOTA
AI人工智能 Python实现人机对话
2017/11/13 Python
如何使用VSCode愉快的写Python于调试配置步骤
2018/04/06 Python
python smtplib模块自动收发邮件功能(二)
2018/05/22 Python
Python同步遍历多个列表的示例
2019/02/19 Python
python3.7将代码打包成exe程序并添加图标的方法
2019/10/11 Python
Python reshape的用法及多个二维数组合并为三维数组的实例
2020/02/07 Python
Python 开发工具PyCharm安装教程图文详解(新手必看)
2020/02/28 Python
Django 后台带有字典的列表数据与页面js交互实例
2020/04/03 Python
matplotlib基础绘图命令之imshow的使用
2020/08/13 Python
Restful_framework视图组件代码实例解析
2020/11/17 Python
军训自我鉴定
2013/12/14 职场文书
应届电子商务毕业自荐书范文
2014/02/11 职场文书
元旦晚会策划方案
2014/02/18 职场文书
医疗纠纷协议书
2014/04/16 职场文书
大学生自我评价范文
2015/03/03 职场文书
小学教师求职信范文
2015/03/20 职场文书
敬老院义诊活动总结
2015/05/07 职场文书
2016年母亲节广告语
2016/01/28 职场文书
python删除csv文件的行列
2021/04/06 Python