直方图
使用hist()绘制直方图。hist()函数的语法:
hist ( x , bins = None , range = None , density = False , weights = None ,累积= False , bottom = None , histtype = 'bar' , align = 'mid' , orientation = 'vertical' , rwidth = None ,日志=假,颜色=无,标签=无,堆叠=假, *,数据=无, ** kwargs)[来源] #
常用函数:
X : 表示X轴的数据,这需要单个数组或不需要具有相同长度的数组序列。
bins : 表示矩形条的个数,默认为10
range : 表示数据的范围,
bin 的下限和上限范围。忽略上下异常值。如果未提供,则范围为. 如果bin是一序列,
则范围无效。(x.min(), x.max())
如果bins是一个序列或指定了范围,则自动缩放基于指定的 bin 范围而不是 x 的范围。
histtype : 表示直方图的类型,{'bar', 'barstacked', 'step', 'stepfilled'},默认值:'bar'
要绘制的直方图类型。
-
'bar' 是传统的条形直方图。如果给出多个数据,则条形图并排排列。
-
'barstacked' 是一种条形直方图,其中多个数据堆叠在一起。
-
'step' 生成默认未填充的线图。
-
'stepfilled' 生成一个默认填充的线图。
导入需要用到的模块
import matplotlib.pyplot as plt
import numpy as np
准备50个随机测试数据
scores = np.random.randint(0,100,50)
创建画布及绘图区域
fig = plt.figure( ) #创建画布的figure类的对象
ax = fig.add_subplot(111) #在画布绘图区域内添加ax坐标系风格
绘制直方图
ax.hist(scores,bins=8,histtype='bar')
展示
plt.show()
完整代码如下:
书本示例绘制直方图(Python数据可视化P36)
# 需求一: 另外再生成一个包含20000个数据的标准正态分布数组,并在同一个绘图区域并排展示
#导入模块
import matplotlib.pyplot as plt
import numpy as np
#创建画布及绘图区域
fig = plt.figure( )
ax = fig.add_subplot(111)
# 1.生成10000个随机数
random_state1 = np.random.RandomState(19680801)
random_x1 = random_state1.randn(10000)
# 2.生成20000个随机数
random_state2 = np.random.RandomState(19680000)
random_x2 = random_state1.randn(10000)
# 3.绘制包含25个矩形条的两组直方图(并排展示)
ax.hist([random_x1,random_x2],bins=25,histtype='bar')
# 4.展示图表
plt.show()
饼图与圆环图
使用pie()绘制饼图与圆环图。pie()函数语法如下:
pie(x, explode = None, labels = None, colors = None, autopct = None, pctdistance = 0.6, shadow = False, labeldistance = 1.1, startangle = 0, radius = 1, counterclock = True, wedgeprops = None, textprops= None , center = (0, 0) , frame = False , rotatelabels = False , * , normalize = True , data = None )[来源] #
常用参数:
X : 表示扇形或楔形尺寸。
explode : 如果不是None,是一个len(x)
数组,它指定偏移每个楔形的半径分数。
labels : 列表,为每个楔形提供标签的字符串序列
colors : 类数组,默认值:无
饼图将循环使用的一系列颜色。如果 None,将使用当前活动循环中的颜色。
autopct : 无或 str 或可调用,默认值:无
如果不是None,是一个字符串或函数,用于用它们的数值标记楔形。%
标签将放置在楔形内。如果它是格式字符串,则标签将为. 如果它是一个函数,它将被调用。
pctdistance : 浮点数,默认值:0.6
每个饼图的中心与autopct生成的文本的开头之间的比率。如果autopct为None则忽略。
书本示例绘制饼图与圆环图(Python数据可视化P39)
# 需求一: 改用圆环图展示数据
# 需求二: 圆环图中的数值标签(即百分数)需精确到小数点后1位,且其必须位于楔形中间位置
# 需求三: 圆环图中"购物"楔形绘制到左下角
#导入模块
import matplotlib.pyplot as plt
import matplotlib as mpl
#创建画布与绘图区域
fig = plt.figure( )
ax = fig.add_subplot(111)
# 设置中文
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
# 外侧说明文字
kinds = ['购物', '人情往来', '餐饮美食', '通信物流', '生活日用', '交通出行', '休闲娱乐', '其他']
# 导入数据
money_scale = [800, 100, 1000, 200, 300, 200, 200, 200]
# 爆炸程度
dev_position = [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]
# 绘制圆环图
ax.pie(money_scale,labels=kinds,autopct='%3.1f%%',shadow=True,explode=dev_position,startangle=170,wedgeprops={'width':0.7},pctdistance=3/4)
#展示图表
plt.show()
绘制饼图
只需删去 shadow=True、explode=dev_position、wedgeprops={'width':0.7}、pctdistance=3/4
展示如下:
散点图与气泡图
使用scatter() 绘制散点图与气泡图。scatter()函数的语法格式如下:
scatter ( x , y , s = None , c = None , marker = None , cmap = None , norm = None , vmin = None , vmax = None , alpha = None , linewidths = None , * , edgecolors = None , plotnonfinite =错误的, data = None , ** kwargs ) [来源]#
常用参数:
X,Y :表示数据点的位置
s : 表示数据点的大小
c : 表示数据点的颜色
marker : 默认值:(rcParams["scatter.marker"]
默认值'o'
:)
标记样式。标记可以是类的一个实例,也可以是特定标记的文本速记。
cmap :str 或Colormap,默认值:(rcParams["image.cmap"]
默认值'viridis'
:)
用于将标量数据映射到颜色的颜色图实例或注册的颜色图名称。
如果c为 RGB(A),则忽略此参数。
alpha :浮点数,默认值:无
Alpha 混合值,介于 0(透明)和 1(不透明)之间。
书本示例绘制散点图与气泡图(Python数据可视化P41)
#导入模块
import numpy as np
import matplotlib.pyplot as plt
#创建画布及绘图区域
fig = plt.figure( )
ax = fig.add_subplot(111)
#设置中文
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
# 准备 x 轴和 y 轴的数据
num = 50
x = np.random.rand(num)
y = np.random.rand(num)
# 绘制散点图
ax.scatter(x , y)
# 展示图表
plt.show()
# 需求一: 将散点图绘制成气泡图,气泡从左到右越来越大
# 需求二: 将所有气泡设置为蓝色
#导入模块
import numpy as np
import matplotlib.pyplot as plt
#创建画布及绘图区域
fig = plt.figure( )
ax = fig.add_subplot(111)
# 设置中文
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
# 准备 x 轴和 y 轴的数据
x_speed = np.arange(10, 210, 10)
y_distance = np.array([0.5, 2.0, 4.4, 7.9, 12.3,
17.7, 24.1, 31.5, 39.9, 49.2,
59.5, 70.8, 83.1, 96.4, 110.7,
126.0, 142.2, 159.4, 177.6, 196.8])
#使气泡点从左到右逐渐增大
area = np.linspace(20,300,20)
# 绘制气泡图
ax.scatter(x_speed,y_distance,s=area,linewidths=1)
# 展示图表
plt.show()
箱形图
使用boxplot()绘制箱形图。boxplot()函数的语法格式:
boxplot ( x , notch = None , sym = None , vert = None , whis = None , position = None , widths = None , patch_artist = None , bootstrap = None , usermedians = None , conf_intervals = None , meanline = None , showmeans= None , showcaps = None , showbox = None , showfliers = None , boxprops = None , labels = None , flierprops = None , medianprops = None , meanprops = None , capprops = None , whiskerprops = None , manage_ticks = True , autorange = False, zorder = None , capwidths = None , * , data = None ) [来源]#
常用参数:
x : 绘制箱形图的数据
notch : 布尔值,默认值:False
是绘制凹口箱线图 ( True) 还是矩形箱线图 ( False)。缺口代表中位数周围的置信区间 (CI)。bootstrap的文档 描述了默认情况下如何计算凹槽的位置,但它们的位置也可以通过设置 conf_intervals参数来覆盖。
sym : str,可选
飞行点的默认符号。空字符串 ('') 隐藏传单。如果None,则传单默认为“b+”。flyerprops参数提供了更多控制。
whis : float 或 (float, float),默认值:1.5 胡须的位置。
showfliers : 表示是否显示异常值,默认显示
书本示例绘制箱形图(Python数据可视化P44)
#导入模块
import numpy as np
import matplotlib.pyplot as plt
#设置中文
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
#做准备数据
data_2018 = np.array([5200, 5254.5, 5283.4, 5107.8, 5443.3, 5550.6, 6400.2, 6404.9, 5483.1, 5330.2, 5543, 6199.9])
data_2017 = np.array([4605.2 , 4710.3, 5168.9, 4767.2, 4947, 5203, 6047.4, 5945.5, 5219.6, 5038.1, 5196.3, 5698.6])
#绘制箱形图
plt.boxplot([data_2018, data_2017], labels=('2018年','2017年'),meanline=True, widths = 0.5, vert = False, patch_artist = True)
#展示
plt.show()
误差棒图
使用errorbar()绘制误差棒图。errorbar()函数的语法格式:errorbar ( x , y , yerr = None , xerr = None , fmt = '' , ecolor = None , elinewidth = None , capsize = None , barsabove = False , lolims = False , uplims = False , xlolims = False , xuplims = False ,errorevery = 1 , capthick = None , * , data = None , ** kwargs )[source]
常用参数:
x , y : 表示数据点的位置
xerr , yerr : 表示数据的误差范围
fmt : 表示数据点的标记样式和数据点之间连接线的样式
ecolor : 表示误差棒图的线条颜色
elinewidth : 表示误差棒的线条宽度
capsize : 表示误差棒边界横杆的大小
capthick : 表示误差棒边界横杆的厚度
书本示例绘制误差棒图(Python数据可视化P48)
#导入模块
import numpy as np
import matplotlib.pyplot as plt
#设置中文
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
#准备x轴和y轴的数据
x=np.arange(3)
y1 =np.array([2.04,1.57,1.63])
y2=np.array([1.69,1.61,1.64])
y3=np.array([4.65,4.99,4.94])
y4=np.array([3.39,2.33,4.10])
# 指定测量偏差
error1 = [0.16, 0.08, 0.10]
error2 = [0.27, 0.14, 0.14]
error3 = [0.34, 0.32, 0.29]
error4 = [0.23, 0.23, 0.39]
bar_width =0.2
#创建画布及绘图区域
fig = plt.figure( )
ax = fig.add_subplot(111)
# 绘制柱形图
ax.bar(x, y1, bar_width)
ax.bar(x + bar_width, y2, bar_width, align="center",
tick_label=["春季 ","夏季","秋季"])
ax.bar(x + 2*bar_width, y3, bar_width)
ax.bar(x + 3*bar_width, y4, bar_width)
# 绘制误差棒:横杆大小为3,线条宽度为3,线条颜色为黑色,数据点标记为像素点
ax.errorbar(x, y1, yerr=error1, capsize=3, elinewidth=2,fmt='k,')
ax.errorbar(x + bar_width, y2, yerr=error2, capsize=3, elinewidth=2, fmt='k,')
ax.errorbar(x + 2*bar_width, y3, yerr=error3, capsize=3, elinewidth=2, fmt='k,')
ax.errorbar(x + 3*bar_width, y4, yerr=error4, capsize=3, elinewidth=2, fmt='k,')
#展示
plt.show()