@灵均Python之Matplotlib基础
实例1:
代码
import numpy as np
from matplotlib import pyplot as plt
x = np.arange(1, 11)
#np.arange() 第一个参数起始,第二个参数结束,第三个参数步长,
#且起点默认值0,步长默认值1,不含终止值。
#x = [1,2,3,4,5,6,7,8,9,10]
#print(type(x)) <class 'numpy.ndarray'> 注意 与 list 的区别
y = 2 * x + 5
plt.title("Matplotlib demo")
plt.xlabel("x axis caption")
plt.ylabel("y axis caption")
plt.plot(x,y)
plt.show()
效果图
实例2:
代码
import numpy as np
from matplotlib import pyplot as plt
x = np.arange(0, 10)
y = 2 * x + 5
plt.title("Matplotlib demo 2")
plt.xlabel("x axis caption")
plt.ylabel("y axis caption")
plt.plot(x,y,"ob")
plt.show()
效果图
样式:
plot([x], y, [fmt], *, data=None, **kwargs)
plot([x], y, [fmt], [x2],y2, [fmt2], …, **kwargs)
The coordinates of the points or line nodes are given by x, y.
The optional parameter fmt is a convenient way for defining basic formatting like color, marker and linestyle. It’s a shortcut string notation described in the Notes section below.
格式化字符
字符 | 描述 |
---|---|
‘-’ | 实线样式 |
‘–’ | 短横线样式 |
‘-.’ | 点划线样式 |
‘:’ | 虚线样式 |
‘.’ | 点标记 |
‘,’ | 像素标记 |
‘o’ | 圆标记 |
‘v’ | 倒三角标记 |
‘<’ | 左三角标记 |
‘>’ | 右三角标记 |
‘1’ | 下箭头标记 |
‘2’ | 上箭头标记 |
‘3’ | 左箭头标记 |
‘4’ | 右箭头标记 |
‘s’ | 正方形标记 |
‘p’ | 五边形标记 |
‘*’ | 星形标记 |
‘h’ | 六边形标记 1 |
‘H’ | 六边形标记 2 |
‘+’ | 加号标记 |
‘x’ | X 标记 |
‘D’ | 菱形标记 |
‘d’ | 窄菱形标记 |
‘|’ | 竖直线标记 |
‘_’ | 水平线标记 |
颜色字符
字符 | 颜色 |
---|---|
‘b’ | 蓝色 |
‘g’ | 绿色 |
‘r’ | 红色 |
‘c’ | 青色 |
‘m’ | 品红色 |
‘y’ | 黄色 |
‘k’ | 黑色 |
‘w’ | 白色 |
实例3:
代码
import numpy as np
import matplotlib.pyplot as plt
# 计算正弦和余弦曲线上的点的 x 和 y 坐标
x = np.arange(0, 3 * np.pi, 0.1)
y_sin = np.sin(x)
y_cos = np.cos(x)
plt.plot(x,y_sin,'-r',x,y_cos,'ob')
plt.text(np.pi/2,1,r'y = sin(x)')
plt.text(np.pi,-1,r'y = cos(x)')
plt.show()
效果图
注释:
基础
1.figure #标题
2.xlable() #x轴标签
3.ylable() #y轴标签
4.title() #图形标题
5.text() #文本注释
6.grid() #是否启用方格[true/false]
annotate
matplotlib.pyplot.annotate(s, xy, *args, **kwargs) #图形注释
对于*args和**kwargs在函数中我们可以称之为参数组,但是这两个还是有区别
1:*args的功能:------接收N个位置参数,转换成元组tuple形式
2:**kwargs的功能------接收N个关键字参数,转换成字典dict形式 matplotlib.patches.Polygon的任何键,例如facecolor
3:位置参数一定要在关键字参数之前,也就是(*args,**kwargs)例
plt.annotate(‘min’,xy=(0.5,-1),xytext=(1,-1),arrowprops=dict(facecolor=‘red’))
#设置图形注释,参数依次为注释文字,箭头位置,箭尾位置。在箭头参数中参数为箭头颜色
实例4:
代码
import numpy as np
import matplotlib.pyplot as plt
# 计算正弦和余弦曲线上的点的 x 和 y 坐标
x = np.arange(0, 3 * np.pi, 0.1)
y_sin = np.sin(x)
y_cos = np.cos(x)
# 建立 subplot 网格,高为 2,宽为 1
# 激活第一个 subplot
plt.subplot(2, 1, 1)
# 绘制第一个图像
plt.plot(x, y_sin)
plt.title('Sin_Picture')
# 将第二个 subplot 激活,并绘制第二个图像
plt.subplot(2, 1, 2)
plt.plot(x, y_cos)
plt.title('Cos_Picture')
# 展示图像
plt.show()
效果图
实例5:
代码
from matplotlib import pyplot as plt
x = [5,8,10]
y = [12,16,6]
x2 = [6,9,11]
y2 = [6,15,7]
plt.bar(x, y, align = 'center')
plt.bar(x2, y2, color = 'g', align = 'center')
plt.title('Bar graph')
plt.ylabel('Y axis')
plt.xlabel('X axis')
plt.show()
效果图
plt.bar
bar(x, height, width=0.8, bottom=None, align=‘center’, data=None,
kwargs*)
例plt.bar(x=0, bottom=y, height=0.5, width=x, orientation=“horizontal”)
参数 | 说明 | 类型 |
---|---|---|
x | x坐标 | int,float |
height | 条形的高度 | int,float |
width | 宽度 | 0~1,默认0.8 |
botton | 条形的起始位置 | 也是y轴的起始坐标 |
align | 条形的中心位置 | “center”,"lege"边缘 |
color | 条形的颜色 | “r",“b”,“g”,"#123465",默认“b" |
edgecolor | 边框的颜色 | 同上 |
linewidth | 边框的宽度 | 像素,默认无,int |
tick_label | 下标的标签 | 可以是元组类型的字符组合 |
log | y轴使用科学计算法表示 | bool |
orientation | 是竖直条还是水平条 | 竖直:“vertical”,水平条:“horizontal” |
代码
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
# 将全局的字体设置为黑体
matplotlib.rcParams['font.family'] = 'SimHei'
# 数据
N = 5
y = [20, 10, 30, 25, 15]
x = np.arange(N)
# 添加地名坐标
str1 = ("北京", "上海", "武汉", "深圳", "重庆")
# 绘图 x x轴, height 高度, 默认:color="blue", width=0.8
p1 = plt.bar(x, height=y, width=0.5, label="城市指标", tick_label=str1)
# 添加数据标签
for a, b in zip(x, y):
plt.text(a, b + 0.05, '%.0f' % b, ha='center', va='bottom', fontsize=10)
# 添加图例
plt.legend()
# 展示图形
plt.show()
效果图
实例6:
代码
from matplotlib import pyplot as plt
import numpy as np
a = np.array([22, 87, 5, 43, 56, 73, 55, 54, 11, 20, 51, 5, 79, 31, 27 , 20,21, 15])
plt.hist(a, bins=[0, 20, 40, 60, 80, 100])
plt.title("Frequency_histogram")
plt.show()