用面向对象API绘制直方图,饼图,散点图,箱形图,误差棒图

直方图

使用hist()绘制直方图。hist()函数的语法:

hist ( x , bins = None , range = None , density = False , weights = None ,累积= False , bottom = None , histt​​ype = '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生成的文本的开头之间的比率。如果autopctNone则忽略。

  书本示例绘制饼图与圆环图(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 = Falsezorder = 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()

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值