python条形图和线形图的绘制,并显示数据
·
1. matplotlib.pyplot库的简述
pyplot是matplotlib的子库,主要用于实现各种数据展示图形的绘制
首先导入此包,方便引用取个别名plt
import matplotlib.pyplot as plt
2. 能实现画图的最基本函数
创建一个全局绘图区域,facecolor=None 为无色背景
plt.figure(figsize=None, facecolor=None)
figsize(a,b)中的参数a是指绘图区宽度,b则是高度
plt.figure(figsize=(8,4), facecolor=“yellow”)
plt.show() 将绘图结果显示出来
常用函数 | 举例 |
---|---|
plt.title() | 为所做之图取个标题,如plt.title(“一周内温度变化折线图”) |
plt.xlabel(s) | 设置x轴的标签,如plt.xlabel(“年份”) |
plt.ylabel(s) | 设置y轴的标签,如plt.ylabel(“人数/万人”) |
plt.legend() | 为坐标轴放置图注,plt.legend()默认调整 ,如plt.legend(loc=“upper left”)自我调整 |
plt.xlim(xmin,xmax) | 设置x轴的取值范围,如pltxlim(0,10) |
plt.ylim(ymin,ymax) | 设置y轴的取值范围,如plt.ylim(0,30) |
plt.xticks() | 显示x坐标对应位置的内容,就是位置更名函数,如plt.xticks(x,x_ticks) |
例如x = [0,1,2,3,4,5]和x_ticks = [“张三”, “李四”, “王五”, “钱六”, “赵大”, “孙七”] | |
plt.text(x,y,s,fontdic,withdash) | 为坐标图轴添加注释 |
若要在表中显示中文,需要字体设置函数,给出常见的7中文字体
如:plt.rcParams[“font.family”] = “kaiTi”
字体名称 | 字体的英文表示 |
---|---|
宋体 | SimSun |
黑体 | SimHei |
楷体 | KaiTi |
微软雅黑 | Microsoft YaHei |
隶书 | LiSu |
仿宋 | FangSong |
幼圆 | YouYuan |
3.线形图,条形图的图表函数:
3.1绘制线形图的 plot()函数的参数说明
plot( x , y , [fmt] , …)
参数 | 说明 |
---|---|
x | x轴坐标,一般为列表(没有值时,值的个数默认与y轴坐标个数相同,从0开始增大) |
y | y轴坐标,通常是一个数或数组 |
fmt | 定义线的基本元素,由颜色、标记的形状、线条的形状三部分字符组成,如"rO–"== “红色/标记是实心圆/破折线” |
… | 自定义:color(颜色)marker(标记的形状)linestyle(线条形状)linewidth(线条宽度)marksize(标记的大小)label(标签,用于图例) |
常用标记样式:
S --> 实心正方形 P --> 实心五角星 O --> 实心圆 * --> 星形 D --> 菱形
常用线形样式:
- 实线 : 虚线 – 破折线 -. 画点线
常用颜色字符:
b 蓝色 m 洋红色 w 白色
g 绿色 y 黄色
r 红色 k 黑色
也可以使用全称(red、green)还可以使用十六进制字符串(如#aabbcc)
3.2线形图示例
import matplotlib.pyplot as plt
plt.rcParams["font.family"] = "KaiTi"
x = ["周一", "周二", "周三", "周四", "周五", "周六", "周日"]
highest = [12, 15, 18, 14, 16, 14, 10]
lowest = [6, 4, 8, 12, 10, 9, 7]
plt.ylim(0, 25)
plt.plot(x, highest, "rs--", label="最高气温")
plt.plot(x, lowest, "rd--", label="最低气温")
for a, b in zip(x, highest):
plt.text(a, b+1, b, ha='center', va='bottom')
# 数据显示的横坐标、显示的位置高度、显示的数据值的大小
for a, b in zip(x, lowest):
plt.text(a, b-2, b, ha='center', va='bottom')
plt.title("一周气温变化趋势")
plt.xlabel("星期")
plt.ylabel("气温")
plt.legend()
plt.show()
plt.text(a,b,b)
数据显示x轴对应位置、显示的位置高度(可以调整)、显示的数据值的大小
for a, b in zip(x, highest): # 使用for 循环依次次输出 zip()对应连接
plt.text(a, b + 2, b, ha=‘center’, va=‘bottom’)
3.3绘制条形图的 bar()函数的参数说明> plot( x , y , [fmt] …)
bar( x , y , width=0.8,bottom=None ,align= “center”,color=“yellow” )
参数 | 说明 |
---|---|
x | x轴的位置序列,一般为列表中的值 |
y | y轴的数值序列,条形图的高度,需要展示的数据 |
width | 每个条形的宽度,可调整 |
align | 条形与x轴对齐方式,有center和edge两种,默认为center |
color | 每个条形的填充颜色 |
edgecolor | 每个条形的边框颜色 |
注意:如果要在一个途图中显示多个条形图,可调整位置align,和宽度width,使并列或重叠显示
3.2条形图示例
import matplotlib.pyplot as plt
plt.rcParams["font.family"] = "kaiTi"
nums = [172, 169, 177, 201, 238, 290]
x_ticks = [2014, 2015, 2016, 2017, 2018, 2019]
x = range(0, len(nums))
# 显示x坐标对应位置的内容,就是位置更名函数,plt.xticks()
plt.xticks(x, x_ticks) # rotation="vertical" 倒转九十度
plt.bar(x, nums, width=0.6, label="研究生人数")
# plt.text(a,b,b)数据显示的横坐标、显示的位置高度、显示的数据值的大小
for a, b in zip(x, nums):
plt.text(a, b + 2, b, ha='center', va='bottom')
plt.xlabel("年份")
plt.ylabel("人数/万人")
plt.legend(loc="upper left") # 显示标签
plt.show()
plt.text(a,b,b)
数据显示x轴对应位置、显示的位置高度(可以调整)、显示的数据值的大小
for a, b in zip(x, nums): # 使用for 循环依次次输出 zip()对应连接
plt.text(a, b + 2, b, ha=‘center’, va=‘bottom’)
3.3条形图示例2
import matplotlib.pyplot as plt
import numpy as np
plt.figure(figsize=(8,6),facecolor="yellow")
plt.rcParams["font.family"] = "kaiTi"
nums = [172, 169, 177, 201, 238, 290]
luqu_nums = [54, 57, 58, 72, 76, 79]
x_ticks = [2014, 2015, 2016, 2017, 2018, 2019]
x = range(0, len(nums))
# 显示x坐标对应位置的内容,就是位置更名函数,plt.xticks()
plt.xticks(x, x_ticks) # rotation="vertical" 倒转九十度
plt.bar(x, nums, width=0.4, label="研究生报考人数")
plt.bar([i + 0.4 for i in x], luqu_nums, width=0.4, label="研究生录取人数")
# plt.text(a,b,b)数据显示的横坐标、显示的位置高度、显示的数据值的大小
for y in nums, luqu_nums:
for a, b in zip(x, y):
if y == luqu_nums:
a += 0.4 # 控制第二个条形数据显示的横坐标
plt.text(a, b + 2, b, ha='center', va='bottom')
plt.xlabel("年份")
plt.ylabel("人数/万人")
plt.legend(loc="upper left") # 显示标签
plt.show()
plt.text(a,b,b)数据显示的横坐标、显示的位置高度、显示的数据值的大小
for y in nums, luqu_nums:
for a, b in zip(x, y):
if y == luqu_nums:
a += 0.4 # 控制第二个条形数据显示的横坐标
plt.text(a, b + 2, b, ha=‘center’, va=‘bottom’)
更多推荐
已为社区贡献1条内容
所有评论(0)