plt.plot(x,y,format_string,**kwargs)
- x轴数据,y轴数据,format_string控制曲线的格式字串
-
**kwards:
color 颜色
linestyle 线条样式
marker 标记风格
markerfacecolor 标记颜色
markersize 标记大小 等等
- format_string 由颜色字符,风格字符,和标记字符
颜色字符 | #说明 | 颜色字符 | #说明 |
---|---|---|---|
'c' | 青色 | 'y' | 黄色 |
'g' | 绿色 | 'r' | 红色 |
'w' | 白色 | 'b' | 蓝色 |
'k' | 黑色 | 'm' | 洋红色 |
线条格式 | 说明 |
---|---|
'-' | 实线 |
'-' | 短划线 |
'-.' | 点划线 |
':' | 虚线 |
标记字符 | 说明 |
---|---|
'H'/'h' | 横/竖六边形 |
'+' | 十字标 |
'D' | 菱形 |
'l' | 垂直线标记 |
中文显示乱码
plt.rcParams['font.sans-serif'] = [u'SimHei'] #显示中文
plt.rcParams['axes.unicode_minus'] = False #显示负号
(个人觉得很好看的GRB颜色 ↓↓↓)
RGB颜色 | #值 |
---|---|
浅紫色 | #CCCCFF |
奶黄色 | #FFFFCC |
浅蓝色 | #CCFFFF |
粉橙色 | #FFCCCC |
复活节紫 | #CC99FF |
薄荷绿 | #99FFCC |
设置plt对象的属性和方法
- plt.xlabel():设置x轴的标签,plt.ylabel():设置y轴标签。
- plt.title:设置图的标题。
- plt.xlim():设置x轴的起始坐标
- plt.ylim():设置y轴的起始坐标。
- plt.legend():显示图例,即图中表示每条曲线的标签和样式的矩形区域。
plt.figure()用来画图,自定义画布大小
figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True)
num:图像编号或名称,数字为编号 ,字符串为名称
figsize:指定figure的宽和高,单位为英寸;
dpi参数指定绘图对象的分辨率,即每英寸多少个像素,缺省值为80 1英寸等于2.5cm,A4纸是 21*30cm的纸张
facecolor:背景颜色
edgecolor:边框颜色
frameon:是否显示边框
fig1 = plt.figure(num='vae', figsize=(10, 3), dpi=75, facecolor='#FFFFFF', edgecolor='#0000FF')
subplot(numRows,numCols,plotNum)
- plt.subplot(222)
将figure设置的画布大小分成几个部分,参数‘221’表示2(row)x2(colu),即将画布分成2x2,两行两列的4块区域,第三位的1表示选择图形输出的区域在第一块,图形输出区域参数必须在“行x列”范围。也可用','进行分割,如plt.subplot(2,2,3)仅当numRows,numCols,plotNum都小于10时可以省略‘,’进行缩写。
-
导入包
import random
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = [u'SimHei']#显示中文
plt.rcParams['axes.unicode_minus'] = False #显示负号
-
绘制散点图
x=[2,1,2,3,4,5]
y=[1,2,2,5,4,3]
plt.scatter(x,y,s=60,c='g',marker='H')
使用plot()函数也能画散点图,只要它的第3个参数是点型(而不是线型)
-
绘制直方图
mu,sigma=100,20
x=mu+sigma*np.random.randn(20000)
plt.hist(x,bins=100,color='r',normed=True)
- 直方图横轴表示数据类型,纵轴表示分布情况
- bins指定直方的个数,normed指定每个条状图的占比例比
-
绘制饼状图
labels = 'Frogs', 'Hogs' ,'Dogs' ,'Logs'
sizes = [15, 30, 45, 10]
explode = (0, 0.1, 0, 0)
plt.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%', shadow=True, startangle=120,colors='rwmc')
labels设置数据的标签;sizes设置每块所占比例,explode 设置某一块或多块突出来显示,shadow设置阴影。
-
绘制条状图
y = [15, 30, 25, 10,20,34,33,18]
x=np.arange(8) #0-7个条形
plt.bar(x, y, color='#99ffcc', width=0.5)
plt.plot(x, y, 'k', marker='+')
for x1, yy in zip(x, y):
plt.text(x1, yy + 1, str(yy), ha='center', va='bottom')
align --对齐方式
tick_label -- 标签
hatch -- 填充内容
width=0.5使条状和间隙各占一半宽,设置参数orientation =‘horizontal’可绘制水平方向条形图
plt.barh()
plt.barh(x,y,align="center",color="c",tick_label = ["q","a","c","e","r","j","b","p"],hatch="/")-
绘制极坐标图
ax=plt.subplot(257,projection='polar')
N = 20
theta = np.linspace(0.0, 2 * np.pi, N, endpoint=False)
radii = 10 * np.random.rand(N)
width = np.pi / 4 * np.random.rand(N)
bars = ax.bar(theta, radii, width = width, bottom = 0.0)
for r, bar in zip(radii, bars):
bar.set_facecolor(plt.cm.viridis(r / 10.))
bar.set_alpha(0.5)
plt.subplot(2,5,8,projection='polar')
N = 20
theta = np.linspace(0.0, 2 * np.pi, N, endpoint=False)
radii = 10 * np.random.rand(N)
plt.polar(theta,radii,color="chartreuse",linewidth=2,marker="*",mfc="b",ms=6)
-
绘制气泡图, 用二维表示三维数据
a = np.random.randn(20)
b = np.random.randn(20)
plt.scatter(a, b, s=np.power(5*a+20*b,2),c=np.random.rand(20),cmap=matplotlib.cm.RdYlBu,marker="o")
a,b 为 x,y 坐标
s----> 对应气泡大小
c-----> 散点标记颜色
cmap-----> 讲浮点数映射成颜色的颜色映射表
1.numpy.random.rand()
官方文档中给出的用法是:numpy.random.rand(d0,d1,…dn)
以给定的形状创建一个数组,并在数组中加入在[0,1]之间均匀分布的随机样本。
2.numpy.random.randn()
官方文档中给出的用法是:numpy.random.rand(d0,d1,…dn)
以给定的形状创建一个数组,数组元素来符合标准正态分布N(0,1)
3.numpy.random.randint()
官方文档中给出的用法是:numpy.random.randint(low,high=None,size=None,dtype)
生成在半开半闭区间[low,high)上离散均匀分布的整数值;若high=None,则取值区间变为[0,low)
plt.title()函数用于设置图像标题。
参数:
fontsize设置字体大小,默认12,可选参数 [‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’,‘x-large’, ‘xx-large’]
fontweight设置字体粗细,可选参数 [‘light’, ‘normal’, ‘medium’, ‘semibold’, ‘bold’, ‘heavy’, ‘black’]
fontstyle设置字体类型,可选参数[ ‘normal’ | ‘italic’ | ‘oblique’ ],italic斜体,oblique倾斜
verticalalignment设置水平对齐方式 ,可选参数 : ‘center’ , ‘top’ , ‘bottom’ , ‘baseline’
horizontalalignment设置垂直对齐方式,可选参数:left,right,center
rotation(旋转角度)可选参数为:vertical,horizontal 也可以为数字
alpha透明度,参数值0至1之间
backgroundcolor标题背景颜色
bbox给标题增加外框 ,常用参数如下:
boxstyle方框外形
facecolor(简写fc)背景颜色
edgecolor(简写ec)边框线条颜色
edgewidth边框线条大小
详情见
import random
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = [u'SimHei']#显示中文
plt.rcParams['axes.unicode_minus'] = False #显示负号
plt.figure(num='Vae',figsize=(16, 7))
plt.xlabel('x')
plt.ylabel('y')
plt.title('Simple Diagram')
x=np.arange(-5,5,0.01)
y,y2=x*x*x,8*x+9 #给y和y2赋值
plt.subplot(2,5,1)
plt.plot(x,y,'c--',label="x^3")
plt.plot(x,y2,'#ccccff',label="8x+9")
plt.legend() #显示图例
plt.title("多函数图")
num=range(50,100)
nums=random.sample(num,10)
a=np.linspace(0,10,10)
# print(nums)
# print(a)
plt.subplot(2,5,2)
plt.plot(a,nums,'#cc99ff',label="random50-100")
plt.legend()
plt.title("随机数图")
plt.subplot(2,5,3)
plt.title("散点图")
x=[2,1,2,3,4,5,8,7,4]
y=[1,2,2,5,4,3,6,7,2]
plt.scatter(x,y,s=60,c=x,cmap=plt.cm.Blues,marker='H')
plt.subplot(2,5,4)
plt.title("直方图")
mu,sigma=100,20
x=mu+sigma*np.random.randn(20000)
plt.hist(x,bins=100,color='r',normed=True)
plt.subplot(2,5,5)
plt.title("饼状图")
labels = 'Frogs', 'Hogs' ,'Dogs' ,'Logs'
sizes = [15, 30, 45, 10]
explode = (0, 0.1, 0, 0)
plt.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%', shadow=True, startangle=120,colors='mwyc')
plt.subplot(2,5,6)
plt.title("条形图",color='pink',fontweight='heavy',fontsize='large')
y = [15, 30, 25, 10,20,34,33,18]
x=np.arange(8) #0-7个条形
plt.bar(x, y, color='#99ffcc', width=0.5)
plt.plot(x, y, '#ffcfcc', marker='+')
for x1, yy in zip(x, y):
plt.text(x1, yy + 1, str(yy), ha='center', va='bottom')
ax=plt.subplot(257,projection='polar')
plt.title("极坐标图",color='pink',fontweight='heavy',fontsize='large')
N = 20
theta = np.linspace(0.0, 2 * np.pi, N, endpoint=False)
radii = 10 * np.random.rand(N)
width = np.pi / 4 * np.random.rand(N)
bars = ax.bar(theta, radii, width = width, bottom = 0.0)
for r, bar in zip(radii, bars):
bar.set_facecolor(plt.cm.viridis(r / 10.))
bar.set_alpha(0.5)
plt.subplot(2,5,8,projection='polar')
plt.title("极坐标图",color='pink',fontweight='heavy',fontsize='large')
N = 20
theta = np.linspace(0.0, 2 * np.pi, N, endpoint=False)
radii = 10 * np.random.rand(N)
plt.polar(theta,radii,color="chartreuse",linewidth=2,marker="*",mfc="b",ms=6
ax1=plt.subplot(2,5,10, polar=True)
x = np.linspace(0, 1, 100)
y = 2*np.pi*x
plt.title("气泡图",color='pink',fontweight='heavy',fontsize='large')
x1 = 30*np.random.rand(20)
y1 = 2*np.pi*np.random.rand(20)
colors = np.random.rand(20)
size = 15*x1
ax1.scatter(x1, y1, s=size, c=colors, cmap=matplotlib.cm.PuOr, marker="*")
plt.subplot(259)
a = np.random.randn(20)
b = np.random.randn(20)
plt.scatter(a, b, s=np.power(5*a+20*b,2),c=np.random.rand(20),cmap=matplotlib.cm.RdYlBu,marker="o")
# print(a,b)
plt.title("极坐标图",color='pink',fontweight='heavy',fontsize='large')
plt.show()
import matplotlib.pyplot as plt
#创建一个关于x值的列表,包括数值1到1000
x_values=list(range(1,1001))
# #生成y值的列表解析,for x in x_values遍历所有的x,计算x^2,并将结果存储到y值的列表之中
y_values=[x**2 for x in x_values]
# #将参数c设置成了一个y值列表,并使用参数cmap告诉pyplot使用哪个颜色映射。这些代#码将y值较小的点显示为浅蓝色,并将y值较大的点显示为深蓝色。edgecolor='none'表示删除数据点的轮廓
plt.scatter(x_values,y_values,c=y_values,cmap=plt.cm.Blues,edgecolor='none',s=40)
# #绘制标题,x、y轴标签名,并设置字体大小
plt.title("Square Numbers",fontsize=24)
plt.xlabel("Value",fontsize=14)
plt.ylabel("Square of Value",fontsize=14)#默认是major表示主刻度,后面分布为次刻度及主次刻度都显示.
plt.tick_params(axis='both',which='major',labelsize=14)
# #x轴坐标轴取值范围是0到1100,y轴坐标轴取值范围是0到1100000
plt.axis([0,1100,0,1100000])
plt.show()
# #保存图像,bbox_inches可以剪出当前图表周围的空白部分
plt.savefig('squares_plot.png',bbox_inches='tight')