第一部分:基本图形
一.散点图
散点图能描述两个变量的联系:正相关、负相关或无关。
import numpy as np
import matplotlib.pyplot as plt
N=1000
x=np.random.randn(N)
y1=np.random.randn(len(x))
plt.scatter(x, y1, s=50, marker='o', c='red', alpha=0.5)
plt.show()
plt.scatter()中:
s:每个点的面积;
marker:点的类型,o–圆形;
c或color:点的颜色;
alpha:点的透明度,1–不透明,0–透明。
二.折线图
用直线将数据连接,用于观察变量随x轴(时间)变化的趋势。
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
def bytedate2num(fmt):
def converter(b):
return mdates.strpdate2num(fmt)(b.decode('ascii'))
return converter
date_converter = bytedate2num('%m/%d/%Y')
date,open,close=np.loadtxt('000001.csv',delimiter=',',converters={0:date_converter},skiprows=1,usecols=(0,1,4),unpack=True)
plt.plot_date(date,open,linestyle='-',color='blue',marker='o')
plt.show()
plt.plot()和plt.plot_date()中:
marker:点的类型,o–圆形;
color:点的颜色;
linestyle:线段类型。
三.条形图
高度代表大小,用于比较多个项目分类的数据大小。
1.竖直的条形图plt.bar():
import numpy as np
import matplotlib.pyplot as plt
index=np.arange(4)
sales_BJ=[52,55,63,53]
sales_SH=[44,66,55,41]
bar_width=0.3
# 1.无堆叠,多组数据并列显示
plt.bar(x=index,height=sales_BJ,width=bar_width,color='b')
plt.bar(x=index+bar_width,height=sales_SH,width=bar_width,color='r')
plt.show()
# 2.有堆叠,多组数据在一列显示
# plt.bar(index,sales_BJ,bar_width,color='b')
# plt.bar(index,sales_SH,bar_width,color='r',bottom=sales_BJ)
# plt.show()
x:每个条形中心的横坐标;
height:每个条形的高度;
width:每个条形的宽度,默认为0.5;
bottom:每个条形的底部基准,默认为0;
color:颜色。
1)无堆叠
2)有堆叠:把第二组数据的起点bottom设置为第一组数据
2.水平的条形图plt.barh():
import numpy as np
import matplotlib.pyplot as plt
index=np.arange(4)
sales_BJ=[52,55,63,53]
sales_SH=[44,66,55,41]
bar_width=0.3
# 1.无堆叠,多组数据并列显示
plt.barh(y=index,width=sales_BJ,height=bar_width,color='blue')
plt.barh(y=index+bar_width,width=sales_SH,height=bar_width,color='red')
plt.show()
# 2.有堆叠,多组数据在一列显示
# plt.barh(y=index,width=sales_BJ,height=bar_width,color='b')
# plt.barh(y=index,width=sales_SH,height=bar_width,color='r',left=sales_BJ)
# plt.show()
y:每个水平条形中心的纵坐标;
height:每个条形的纵向高度(宽度),默认为0.5;
width:每个条形的横向宽度(长度);
left:每个条形的左边基准,默认为0;
color:颜色。
1)无堆叠
2)有堆叠:把第二组数据的起点left设置为第一组数据
四.直方图
一系列高度不等的纵向条形组成,表示数据分布情况。
条形图:表示不同类别的数据;
直方图:表示同类别数据的分布情况。
import numpy as np
import matplotlib.pyplot as plt
mu = 100 # mean of distribution
sigma = 20 # standard deviation of distribution
x = mu + sigma * np.random.randn(2000)
plt.hist(x, bins=10,color='red',normed=True)
plt.show()
直方图plt.hist():
bins:分成的份数;
normed:标准化,显示所占比例,默认为False,显示具体数字;
color:颜色。
五.饼状图
显示一个数据系列中各项的大小和比例。
import matplotlib.pyplot as plt
labels = 'A', 'B', 'C', 'D'
fracs = [15, 30, 45, 10]
#设置各部分是否突出显示,即远离圆心
explode = (0, 0.05, 0, 0) #list也可以
#通过.axes()设置轴向,即x轴与y轴比例
plt.axes(aspect=1)
plt.pie(fracs, explode=explode, labels=labels, autopct='%.1f%%', shadow=True)
plt.show()
饼状图plt.pie():
explode:设置突出显示比例,元祖或列表形式,存储各部分突出比例;
labels:设置各部分标签;
autopct:设置显示格式,%.1f%%----输出一位小数的float+%,详情见备注1。
六.箱型图
用于显示一组数据分散情况的统计图。
import numpy as np
import matplotlib.pyplot as plt
data = np.random.normal(size=(100, 4), loc=0.0, scale=1.0)
labels = ['A','B','C','D']
plt.boxplot(data, labels=labels,sym='o',whis=1)
plt.show()
箱型图plt.boxplot():
labels:数据标签;
sym:异常值的图形;
whis:异常值数量所占的比例,whis越大则异常值所占比越大。
备注
1.python中%的相关用法:
%% 百分号标记 #就是输出一个%
%c 字符及其ASCII码
%s 字符串
%d 有符号整数(十进制)
%u 无符号整数(十进制)
%o 无符号整数(八进制)
%x 无符号整数(十六进制)
%X 无符号整数(十六进制大写字符)
%e 浮点数字(科学计数法)
%E 浮点数字(科学计数法,用E代替e)
%f 浮点数字(用小数点符号)
%g 浮点数字(根据值的大小采用%e或%f)
%G 浮点数字(类似于%g)
%p 指针(用十六进制打印值的内存地址)
%n 存储输出字符的数量放进参数列表的下一个变量中