前言
为了方便记忆,找出认为重要的精简的总结了一下,如有错误请指出,谢谢
绘图前设置
绘图前第一步,导入相关包
# 就我目前来说,只用在 设置全局的字体,字号,字体颜色
import matplotlib as mpl
# 各种图形的库
import matplotlib.pyplot as plt
# 导入俩个库,具有三个常用的数组(ndarray,SeriesDataFrame),np中还有很多聚合函数
import numpy as np
import pandas as pd
绘图前第二步,设置中文字体(全局设置)
# 设置 图形中的字体为 黑体
mpl.rcParams["font.family"] = "SimHei"
# 设置 将 unicode 负号改为 ASCII字符集的负号
mpl.rcParams["axes.unicode_minus"] = False
绘图前第三步,了解常用局部设置(其他)
# 设置图形的标题
plt.title("设置图形的标题")
# 设置x轴与y轴显示的标签内容。
plt.xlabel("部门")
plt.ylabel("销售量")
# 获取绘图支持的所有样式。
plt.style.available
# 设置绘图使用的样式。
plt.style.use("ggplot")
# 设置图形的透明度
plt.plot([1, 3], [2, 4], alpha=0.5)
绘图前第三步,了解常用局部设置(设置图例)
# 在创建图像的时候,设置图例
plt.plot(np.arange(1, 13), np.random.randint(100, 200, size=12), label="去年")
plt.plot(np.arange(1, 13), np.random.randint(100, 200, size=12), label="今年")
# loc 指定图例显示的位置。默认为best。可以是int,string与元组类型。
plt.legend(loc="best")
# 元组具有两个元素,分别指定x与y轴相对于原点的偏移比例。原点在左小角。
plt.legend(loc=(0.2, 0.4))
plt.legend(loc=(0, 0))
# frameon 指定图例是否显示边框,默认为True。
plt.legend(frameon=False)
# 设置图例的标题。
plt.legend(title="图例说明")
# 设置图例的列数。
plt.legend(ncol=2)
绘图前第四步,绘图区域设置
# 我们需要在绘图区域进行绘图.
# 我们可以直接使用 plt.(图形对象)进行绘图,但是,这种方式实际上,也是隐式的创建了绘图区域的
# 我们有三种方式进行显示的创建绘图区域:
* add_subplot方法,需要先创建画布对象,然后在画布对象上,创建绘图区域
* subplot 方法, 隐式创建画布对象,可以直接创建绘图区域
* subplots 方法,可以同时创建多个子绘图区域
# 使用 add_subplot方法创建绘图区域
# 创建画布对象
f = plt.figure()
#创建绘图区域(行数,列数,第几个),绘制的数量不得超过行数和列数设置应有数
#比如如下,一行二列,那就只能创建俩个
ax = f.add_subplot(1, 2, 1)
# 得到绘图区域之后,可以直接创建图像了。可以使用得到的绘图区域对象创建
# 也可以直接 使用 plt创建,直接使用plt创建,默认是使用最新创建的一个绘图区域
ax2.plot([5, 10], [2, 6], "go--")
plt.plot([5, 10], [2, 6], "ro--")
# 调整子绘图区域与子绘图区域之间,子绘图区域与画布之间的距离。
plt.subplots_adjust(wspace=0.5)
# 使用 subplot方法
# 实际上 与 add_subplot方法差不多,就是不需要显示创建 画布
plt.subplot(2, 1, 1)
plt.plot([1, 2], [3, 4])
# subplots方法
# 上边两种方法是 一个一个的创建,这个是一次性创建多个子绘图区域
# 该方法会返回一个元组,元组具有两个元素(figure, 所有的子绘图区域构成的整体【类型不定】)
# 参数 sharex,共享所有绘图区域的坐标轴,方便对比(默认是自己按照自己的扩展)
# 传入行和列
fig, ax = plt.subplots(1, 2, sharex=True, sharey=True)
ax[0].plot([1, 5], [3, 4])
# 绘图区域的大小设置
# 第一种方式,在创建Figure对象时设置。
# figsize 传递一个元组类型。元组含有两个元素(画布的宽度,画布的高度)。单位:英寸。
# plt.figure(figsize=(5, 5))
# 第二种方式。在创建Figure对象之后,通过set_size_inches方法进行设置。
f = plt.figure()
# f.set_size_inches((7, 7))
绘图前第五步(标签与刻度设置)
# xticks / yticks 设置或获取坐标轴的数值刻度。(不传参数就是获取)
# 第一个参数,设置值,第二个参数可以不传,是标签,不传标签,就显示值
plt.xticks([0, 60, 80, 100], ["开始", "及格", "良好", "卓越"])
开始绘图
绘制 折线图
# 折线图,适合展现 数据的趋势和增加变化
# 可以传入x和y 的数值,也可以只传入y的值,x自动生成
plt.plot()
# 可以在绘图的时候设置线条颜色,线形状,线宽,点标记等等
plt.plot([1, 5, 8], [2, 4, 10], c="red", ls="--", lw=2, marker="o")
# 我们可以一次性画多条线,分别指定颜色,标记与线条类型。
plt.plot([1, 5, 7], [2, -2, 4], "g*--", [15, 17], [-8, 6], "r>-")
绘制柱形图、条形图
# 柱形图,条形图,适合呈现数据的大小对比(传入标签值和每个标签值对应的数值)
# 柱形图
plt.bar(["A", "B", "C", "D"], [50, 30, 40, 20])
# 条形图
plt.barh(["A", "B", "C", "D"], [50, 30, 40, 20])
饼图
# 适合呈现数据的大小对比
* shadow 是否显示阴影,默认为False。
* autopct 设置显示的百分比格式。
plt.pie([100, 200, 300, 400], labels=["A部门", "B部门", "C部门", "D部门"],shadow=True,autopct="%.2f%%")
* explode,设置突出某块内容
plt.pie([100, 200, 300, 400], labels=["A部门", "B部门", "C部门", "D部门"],explode=[0, 0, 0, 0.5])
散点图,气泡图
# 散点图(气泡图)使用与显示数据的分布状态,可以用来比较(对比)数据维度之间的关系。
plt.scatter(x, y, marker="o", s=10, color="green")
# 点的颜色与大小可以统一设置,也可以分别设置每个点的大小与颜色。
s = np.random.randint(10, 100, size=100)
colors = ["r", "g", "b", "y"]
colors = np.random.choice(colors, size=100)
plt.scatter(x, y, s=s, color=colors)
# 个人理解,气泡图就是散点图的升级版,就是 散点图是x和y轴的
# 那气泡图就是xyz轴
# 散点图可以显示2个维度,气泡图可以显示2-4个维度。
直方图
# 直方图类似于柱形图,直方图用于将连续值转化为离散值显示
# 注(个人理解):
# 离散值(就是不连续,一个和一个没直接关系,比如各个部门的值)
# 连续值 (值与值之间有着直接联系,就是连续,一连串的值,比如,序号,时间)
# 默认将区间等分为十份。
plt.hist(x)
# 我们也可以自行指定桶的数量。
plt.hist(x, bins=5)
# 如果需要统计的区间是不等分的,可以给bins参数传递一个数组类型。
# 数组中的元素指定区间的界线。
plt.hist(x, bins=[1, 60, 80, 90, 100])
箱线图
# 一般用于(目前我用过的)在数据清洗过程中, 进行查找异常值的时候
# 能够显示离群点,离群点可能是异常值,但是不一定是异常值
# 注:
离群点:大于Q3 + 1.5IQR 或者 小于Q1 - 1.5IQR 。
IQR:Q3与Q1的差值。
# 传入一系列的值,可以显示 远远高于(低于)其他值的值
plt.boxplot([50, 40, 45, 48, 70, 60, 100])
使用Series与DataFrame图形绘制
df = pd.DataFrame([[1, 3, 5], [2, 8, 7], [1, 9, 10]])
display(df)
df.plot(kind="line")
** kind的值:
line:线形图
bar:柱形图
barh:条形图
hist:直方图
kde / density:核密度图
pie:饼图
box:箱线图
area:面积图
我们可以在 ipython中,使用Tab键来填补缺失单词,使用Tab+Shift来打开函数提示(前提是,函数已经被解释过)