安装  python -m pip install matplotlib

 允许中文:

使用matplotlib的字体管理器指定字体文件

plt.rcParams['font.sans-serif']=['SimHei']    #指定默认字体 SimHei为黑体
plt.rcParams['axes.unicode_minus']=False   #用来正常显示负号

常用字体:

黑体 SimHei                                         微软雅黑 Microsoft YaHei

微软正黑体 Microsoft JhengHei            新宋体 NSimSun

新细明体 PMingLiU                              细明体 MingLiU

标楷体 DFKai-SB                                 仿宋 FangSong

楷体 KaiTi                                             仿宋_GB2312 FangSong_GB2312

楷体_GB2312 KaiTi_GB2312

散点图:

x=[160,170,180,165,175,185]
y=[60,70,80,65,75,85]
plt.scatter(x,y,s=500,c='r',marker='*',alpha=1) #散点图
#参数1 横坐标;参数2 纵坐标
#坐标点要一一对应
#s设置点的大小,默认20;s是面积的意思
#c设置颜色,默认b蓝色;r红色;g绿色;c青色;m品红色;y黄色;k黑色;w白色
#设置点的形状;o圆形默认;其它看官网 https://matplotlib.org/api/markers_api.html?highlight=markers#module-matplotlib.markers
#alpha 设置透明度. 1不透明

直线和点:

x=np.linspace(-10,10,10)
y=x**2
plt.plot(x,y,linestyle=':',color='red',marker='o')   #画直线

# "ob" 设置画出坐标点,但是不连线

color 设置颜色     看 https://www.cnblogs.com/darkknightzh/p/6117528.html

marker 设置点的形状  看官网 https://matplotlib.org/api/markers_api.html?highlight=markers#module-matplotlib.markers

marker=  要是省略,只画点不划线;要是不省略,即画点也连线

linestyle设置线的形状:

字符 描述
'-' 实线样式
'--' 短横线样式
'-.' 点划线样式
':' 虚线样式
'.' 点标记
',' 像素标记
'o' 圆标记
'v' 倒三角标记
'^' 正三角标记
'<' 左三角标记
'>' 右三角标记
'1' 下箭头标记
'2' 上箭头标记
'3' 左箭头标记
'4' 右箭头标记
's' 正方形标记
'p' 五边形标记
'*' 星形标记
'h' 六边形标记 1
'H' 六边形标记 2
'+' 加号标记
'x' X 标记
'D' 菱形标记
'd' 窄菱形标记
'|' 竖直线标记
'_' 水平线标记

子图:

plt.subplot(2, 1, 1) #同一图中分开绘制图像
#参数1 子图的行数;参数2 子图的列数;参数3 第几个图像
x=np.linspace(-10,10,10)
y=x**2
plt.plot(x,y,linestyle=':',color='red',marker='o') #画直线
#"ob" 设置画出坐标点,但是不连线

plt.subplot(2, 1, 2)
x1=np.linspace(-10,10,10)
y1=x**2-20
plt.plot(x1,y1,linestyle='--',color='b',marker='*')

效果图:

 条形图:

垂直条形图

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
import matplotlib.dates as mdates #解决能显示中文
mpl.rcParams['font.sans-serif']=['SimHei'] #指定默认字体 SimHei为黑体
mpl.rcParams['axes.unicode_minus']=False #用来正常显示负号 plt.title("图标题",fontsize=24) #图的标题
plt.xlabel("x轴标题")
plt.ylabel("y轴标题") x=[0,1,2,3,4]
y=[10,20,40,30,50] name=['张三','李四','李明','李雪倩','李秀艳']
s=plt.bar(x,height=y,color='r',width=0.2,label="一部门",alpha=0.8) #垂直条形图
#参数1 横坐标位置;参数2 纵坐标高度
#color 设置颜色
#width设置条形图的宽度
#alpha设置透明度
#题注文本 plt.ylim(0, 60) # y轴取值范围
plt.legend() # 设置题注
plt.xticks(x, name) #标注
#参数1 标注位置;参数2 标注文本 for rect in s:#依此返回条形图信息
height = rect.get_height() #返回条形图高度
plt.text(rect.get_x() + rect.get_width() / 2, height+1, str(height), ha="center", va="bottom")
#给条形图写备注
#参数1 备注横坐标;参数2 备注纵坐标;参数3备注文本
s=rect.get_x() #返回条形图左下角的x坐标
s=rect.get_width() #返回条形图宽度
plt.show() #把图形显示出来

效果图

水平条形图:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
import matplotlib.dates as mdates #解决能显示中文
mpl.rcParams['font.sans-serif']=['SimHei'] #指定默认字体 SimHei为黑体
mpl.rcParams['axes.unicode_minus']=False #用来正常显示负号 plt.title("图标题",fontsize=24) #图的标题
plt.xlabel("x轴标题")
plt.ylabel("y轴标题") x=[0,1,2,3,4]
y=[10,20,40,30,50] name=['张三','李四','李明','李雪倩','李秀艳']
s=plt.barh(x, y, height=0.7, color='steelblue', alpha=0.8) #水平条形图
#height 相当于垂直条形图的宽度
plt.yticks(range(5), name) #设置标注
plt.xlim(5,50) #x轴取值范围 plt.show() #把图形显示出来

效果图

堆叠条形图

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
import matplotlib.dates as mdates #解决能显示中文
mpl.rcParams['font.sans-serif']=['SimHei'] #指定默认字体 SimHei为黑体
mpl.rcParams['axes.unicode_minus']=False #用来正常显示负号 plt.title("图标题",fontsize=24) #图的标题
plt.xlabel("x轴标题")
plt.ylabel("y轴标题") #x=[0.0,1.0,2.0,3.0,4.0]
x=np.array([0,1,2,3,4])
y=[10,20,40,30,50]
s=plt.bar(x,height=y,color='r',width=0.2,alpha=0.8)
#参数1 横坐标位置;参数2 纵坐标高度
#color 设置颜色
#width设置条形图的宽度
#alpha设置透明度
#题注文本
plt.ylim(0, 60) # y轴取值范围

s1=plt.bar(x,height=y,color='b',width=0.2,alpha=0.8,bottom=y) #堆叠条形图

#bottom=y 在y条形柱的底部开始画
plt.show() #把图形显示出来

效果图

 直方图:

与条形图显示,直方图的x轴数据是连续的。直方图一般用来描述等距数据

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl #解决能显示中文
mpl.rcParams['font.sans-serif']=['SimHei'] #指定默认字体 SimHei为黑体
mpl.rcParams['axes.unicode_minus']=False #用来正常显示负号 plt.title("图标题",fontsize=24) #图的标题
plt.xlabel("x轴标题")
plt.ylabel("y轴标题") x=[1,2,3,4,5,6,7,8,9,0,1,1,1,1,1,6,6,6,6,6]
y=[1,2,3,4,5,6,7,8,9,0,1,1,7,1,1,6,2,6,7,6]
print(x)
plt.hist(x,bins=10,color='b',density=0,edgecolor='r') #单变量直方图
#参数1 x轴分布数据
#bins:直方图的长条形数目,可选项,默认为10
#density:是否将得到的直方图向量归一化,可选项,默认为0,代表不归一化,显示频数-出现的次数。normed=1,表示归一化,显示频率-出现的次数/总次数
#edgecolor:长条形边框的颜色
#facecolor:长条形的颜色
#alpha:透明度
#plt.hist2d(x,y,bins=10) #双变量直方图
#用颜色的深浅来表达 plt.show()

效果图

饼状图:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt #解决能显示中文
plt.rcParams['font.sans-serif']=['SimHei'] #指定默认字体 SimHei为黑体
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号 plt.title("图标题",fontsize=24) #图的标题
plt.xlabel("x轴标题")
plt.ylabel("y轴标题") label = '超载', '船员责任心不强', '船员驾驶技术太差', '通航环境差', '海事、港航监管不到位', '船舶过于老旧', '冒险航行' # 各类别标签
color = 'red', 'orange', 'yellow', 'green', 'blue', 'gray', 'goldenrod' # 各类别颜色
size = [34, 5, 6, 14, 1, 10, 23] # 各类别占比
plt.axes(aspect=1) #设置x轴与y轴的比例1:1 ????
ex=[0,0.2,0,0,0,0,0] #设置突出的数据,数据表示离开中心点的距离

pie=plt.pie
(x=size,labels=label,autopct='%1.1f%%',explode=ex,shadow=True, colors=color,pctdistance = 0.5) #画饼状图
#x 就是数据,饼状图就是根据这些数据来计算百分比的
#labels 标签
#autopct 在饼状图中显示出百分比
#pctdistance 百分比离中心点的距离
#explode 设置各部分离开中心点的距离
#shadow=True 加上阴影
#colors 设置各部分显示的颜色
for font in pie[1]:
font.set_size(8) #设置标签字体大小
for digit in pie[2]:
digit.set_size(20) #设置 百分比字体的大小


plt.legend(loc='upper right',bbox_to_anchor=(1.2, 1)) #显示图例
# loc: 表示位置,包括'upper right','upper left','lower right','lower left'等
# bbox_to_anchor: 表示legend距离图形之间的距离,当出现图形与legend重叠时,可使用bbox_to_anchor进行调整legend的位置
# 由两个参数决定,第一个参数为legend距离左边的距离,第二个参数为距离下面的距离
#'upper right'=1;'upper left'=2;'lower left'=3;'lower right'=4; 0 自适应找位置
#ncol 图例的列数

plt.show()

效果图

颜色:

八中内建颜色:

b:blue  蓝色

g:green 绿色

r:red 红色

c:cyan   青色

m:magenta  品红

y:yellow      黄色

k:black      黑色

w:white        白色

例子:

data=np.arange(1,5)
plt.plot(data,color='r')

其它三种表示方法:

plt.plot(data,color='0.2')     灰度表示法

#在color直接写数字,数字表示灰度的深浅【在0-1之间,1好像就完全透明了,0最深】

plt.plot(data,color='#FF0000')     十六进制表示法

plt.plot(data,color=(0.2,0.3,0))   #RGB元组表示法

【参数好像是个百分比】

样式字符串:

可以同时表达颜色、点型、线型

例如  plt.plot(data,'rX:')

r  表示红色      X表示点的形状        :表示虚线

天子骄龙:生命诚可贵、时光价更高

matplotlib-2D绘图库的更多相关文章

  1. Python开发环境Wing IDE使用教程之matplotlib 2D绘图库代码调试技巧

    Wing IDE是一个集成开发环境,可用于加快matplotlib2D图形库的Python代码的编写和调试进程.Wing IDE提供自动完成.调用提示.调试器,以及许多其他功能,可帮助用户编写.浏览和 ...

  2. Python第三方库matplotlib(2D绘图库)入门与进阶

    Matplotlib 一 简介: 二 相关文档: 三 入门与进阶案例 1- 简单图形绘制 2- figure的简单使用 3- 设置坐标轴 4- 设置legend图例 5- 添加注解和绘制点以及在图形上 ...

  3. 如何设置让基于matplotlib的绘图库正常的显示no-ascii字符(中文字符)

    添加一句: import matplotlib matplotlib.rc('font', family='simhei') 其中family直接指示字体名字就行,比如simhei 注意:如果不能正常 ...

  4. Python 绘图库Matplotlib入门教程

    0 简单介绍 Matplotlib是一个Python语言的2D绘图库,它支持各种平台,并且功能强大,能够轻易绘制出各种专业的图像. 1 安装 pip install matplotlib 2 入门代码 ...

  5. Python图表绘制:matplotlib绘图库入门

    matplotlib 是Python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地行制图.而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中. 它的文档相当完备,并 ...

  6. matplotlib python高级绘图库 一周总结

    matplotlib python高级绘图库 一周总结 官网 http://matplotlib.org/ 是一个python科学作图库,可以快速的生成很多非常专业的图表. 只要你掌握要领,画图将变得 ...

  7. Python图表绘制:matplotlib绘图库入门(转)

    matplotlib 是Python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地行制图.而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中. 它的文档相当完备,并 ...

  8. 数据可视化:绘图库-Matplotlib

    为什么要绘图? 一个图表数据的直观分析,下面先看一组北京和上海上午十一点到十二点的气温变化数据: 数据: 这里我用一段代码生成北京和上海的一个小时内每分钟的温度如下: import random co ...

  9. Matplotlib Toolkits:python高级绘图库seaborn

    http://blog.csdn.net/pipisorry/article/details/49515745 Seaborn介绍 seaborn (Not distributed with matp ...

  10. Python Matplotlib绘图库 安装

    一般我们在做科学计算的时候,首先会想到的是matlab,但是呢,一想到matlab安装包那么大,我就有点不想说什么了. Matplotlib 是python最著名的绘图库,它提供了一整套和matlab ...

随机推荐

  1. Java代码封装redis工具类

    maven依赖关系: <dependency> <groupId>redis.clients</groupId> <artifactId>jedis&l ...

  2. hbase中文内容编码转换

    /** * HBASE中文转换 */ @Test public void testHbaseStr() throws Exception { // Hbase UTF8编码 String conten ...

  3. Luogu5058 ZJOI2004嗅探器(割点)

    数据范围过小怎么做都行.考虑优秀一点的做法.考虑dfs树上两台中心服务器间的路径,路径上所有能割掉中心服务器所在子树的点均可以成为答案.直接从两点中的任意一点开始dfs就更方便了.一开始弱智的以为只要 ...

  4. BZOJ2282 SDOI2011消防/NOIP2007树网的核(二分答案+树形dp)

    要求最大值最小容易想到二分答案.首先对每个点求出子树中与其最远的距离是多少,二分答案后就可以标记上一些必须在所选择路径中的点,并且这些点是不应存在祖先关系的.那么如果剩下的点数量>=3,显然该答 ...

  5. POJ1611-The Suspects-并查集

    记录元素个数的并查集. 利用sz数组保存并查集的大小.每次union时,把小的集合并到大的中去,并更新sz数组. #include <cstdio> #include <algori ...

  6. python中json.load()、json.loads()、json.dump()、json.dumps()的区别

    json.load()从文件中读取json字符串 json.loads()将json字符串转换为字典类型 json.dumps()将python中的字典类型转换为字符串类型 json.dump()将j ...

  7. Leonardo's Notebook UVALive - 3641(置换)

    题意: 给出26个大写字母的置换B,问是否存在一个置换A,使得A2 = B 解析: 两个长度为n的相同循环相乘,1.当n为奇数时结果也是一个长度为n的循环:2. 当n为偶数时分裂为两个长度为n/2 ( ...

  8. POJ1860(Currency Exchange)

    题意: 给出一张各种货币交换的网络,问在网络中交换原有的货币,问货币能否增值? 解析: 判断是否存在正环即可  用spfa  负环和正环的判定方法一样  如果一个点的进队次数超过n次 则存在环 代码如 ...

  9. 洛谷P2054 [AHOI2005]洗牌(扩展欧几里德)

    洛谷题目传送门 来个正常的有证明的题解 我们不好来表示某时刻某一个位置是哪一张牌,但我们可以表示某时刻某一张牌在哪个位置. 设数列\(\{a_{i_j}\}\)表示\(i\)号牌经过\(j\)次洗牌后 ...

  10. Linux安装aMule下载eDonkey200网络共享文件

    安装aMule 如果你的发行版本包管理器中包含amule和amule-daemon可以直接安装. 如果不包含需要在编译的Configure过程添加参数以包含amulecmd和amuled:./conf ...