python数据可视化

作者 : admin 本文共10192个字,预计阅读时间需要26分钟 发布时间: 2024-06-10 共3人阅读

Matplotlib

依赖numpy 库 ;
可自定义线条的颜色和样式,可在一张绘图纸上绘制多张小图,可在一张图上绘制多条线,可以很方便地将数据可视化并对比分析;
可以绘制多种形式的图形,包括线图、直方图、饼图、散点图等;
应用最广的是matplotlib.pyplot模块;
在Jupyter notebook中进行交互式绘图,需要执行一下语句:
% matplotlib notebook
使用matplotlib时,使用的导入惯例为:
import matplotlib.pyplot as plt

配置

通过配置文件进行配置

根据配置文件的作用范围,可以分为三个级别:全局配置文件、用户级配置文件和当前任务配置文件;

import matplotlib as mpl
import os
​
# 全局配置目录
print(mpl.__path__)
# 当前用户配置目录
print(mpl.get_configdir())
# 当前任务配置目录,即当前代码运行目录
print(os.getcwd())
  • 全局配置文件 mpl-data\matplotlibrc,位于 Matplotlib 的安装目录直线,例如在 Window 下将其安装在 D:\Program Files\Python39\lib\site-packages\matplotlib目录下,则全局配置文件的完整文件名为 D:\Program Files\Python39\lib\site-packages\matplotlib\mpl-data\matplotlibrc,默认情况下,图形使用此配置文件进行绘制。
  • 用户级配置文件 .matplotlib\matplotlibrc,位于用户目录之下,例如,用户目录为 C:\Users\Brainiac\,则相应配置文件C:\Users\Brainiac.matplotlib\matplotlibc;如果不存在此文件,也可以根据全局配置文件与用户需求自定创建和修改。
  • 当前任务配置文件 matplotlibrc,即位于代码运行目录之下,可以用于为当前任务的代码定制 Matplotlib配置,默认情况下不存在此文件,即默认使用全局或当前用户配置文件,我们可以根据需要创建此文件,并根据需要进行配置。

通过 rcParams[‘param_name’] 配置

如果仅仅想在当前文件中简单修改自定义配置,则可以通过 rcParams[‘param_name’] 更快速的修改。通过使用以下代码,可以查看能够自定义配置的属性有哪些:

print(mpl.rc_params())#这个方法返回一个包含当前matplotlib运行时配置参数的字典。这些配置参数包括图形元素的默认颜色、线条样式、字体设置、坐标轴配置等等。通过查看这些参数,可以了解当前matplotlib的配置,以便更好地了解图形的绘制方式和样式设置。
print(mpl.rcParamsDefault)#这个属性返回matplotlib的默认运行时配置参数。这些默认配置参数是在matplotlib库安装时预先设定的值。如果想恢复matplotlib的默认设置,可以使用这些默认参数进行重置。
print(mpl.rcParams)#这个属性包含当前matplotlib的运行时配置参数,代表了当前的matplotlib配置。可以在运行时通过修改这些参数来自定义图形的显示和样式。例如,可以修改图形的默认颜色、线条样式、字体设置、坐标轴配置等等,以满足特定的需求和美学要求。

使用 rcParams[‘param_name’] 方式修改配置的方式如下,其中 param_name 表示属性名:

mpl.rcParams['lines.linewidth'] = 2
# 修改线条颜色为红色
mpl.rcParams['lines.color'] = 'r'

#在实际应用中,最常用的两种配置包括中文和中文负号的显示,如果不进行配置,默认不支持显示中文与中文负号:
#显示中文
mpl.rcParams['font.sans-serif'] = ['SimHei']
#显示负号
mpl.rcParams['axes.unicode_minus']=False

通过 matplotlib.rc() 函数配置

# 修改线宽
mpl.rc('lines', linewidth=2, color='g')#rc 函数的第一个参数为 group 表示属性所属的组,用于限定属性的作用域,例如在以上示例中线宽 linewidth 属于线 lines 用于限定只在线条中起作用,而对坐标轴等线宽 linewidth 不起作用,如果想要修改包括坐标轴在内的图形线宽 linewidth 则需要使用:
# 修改整个图形线宽
mpl.rc('axes', linewidth=2)

常用函数说明

函数描述用法
plt.show()显示图像plt.show()
plt.legend()显示图例plt.legend()
plt.text()数值标签
plt.title标题plt.title(“标题”), loc 参数来设置标题显示的位置,可以设置为: ‘left’, ‘right’, 和 ‘center’, 默认值为 ‘center’。
plt.xlabel();plt.ylabel()轴标签plt.xlabel(“X轴标签”);plt.ylabel(“y轴标签”), loc 参数来设置标题显示的位置,可以设置为: ‘left’, ‘right’, 和 ‘center’, 默认值为 ‘center’。
plt.grid()设置图表中的网格线matplotlib.pyplot.grid(b=None, which=‘major’, axis=‘both’, );b:可选,默认为 None,可以设置布尔值,true 为显示网格线,false 为不显示,如果设置 **kwargs 参数,则值为 true;axis:可选,设置显示哪个方向的网格线,可以是取 ‘both’(默认),‘x’ 或 ‘y’,分别表示两个方向,x 轴方向或 y 轴方向;**kwargs:可选,设置网格样式,可以是 color=‘r’, linestyle=‘-’ 和 linewidth=2,分别表示网格线的颜色,样式和宽度。
close关闭当前figure窗口
legend()为当前axes放置标签
marker点的样式,默认小圆圈 ‘o’。
subplot一个图中包含多个axes
plt.savefig()图片保存为png格式,plt.savefig(‘C:/Users/Admin/Desktop/test_gray.png’, format=“png”);见的图片格式包括 png、jpeg、svg、pdf等
函数描述用法
hist()绘制直方图matplotlib.pyplot.hist(x, bins=None, range=None, density=False, weights=None, cumulative=False, bottom=None, histtype=‘bar’, align=‘mid’, orientation=‘vertical’, rwidth=None, log=False, color=None, label=None, stacked=False, **kwargs)
hist2d()绘制二维在直方图
pie()绘制饼状图matplotlib.pyplot.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=None, data=None)[source]
scatter()做一个X和Y的散点图,其中X和Y是相同长度的序列对象matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, *, edgecolors=None, plotnonfinite=False, data=None, **kwargs)
stackplot()绘制一个堆叠面积图
acorr()绘制X的自相关函数
annotate()用箭头在指定的数据点创建一个注释或一段文本
bar()用于绘制垂直条形图和水平条形图matplotlib.pyplot.bar(x, height, width=0.8, bottom=None, *, align=‘center’, data=None, **kwargs)
barh()绘制横向条形图
barbs()绘制一个倒钩的二维场
plot()用于绘制线图和散点图plot([x], y, [fmt], [x2], y2, [fmt2], …, **kwargs);x, y:点或线的节点,x 为 x 轴数据,y 为 y 轴数据,数据可以列表或数组。fmt:可选,定义基本格式(如颜色、标记和线条样式)。**kwargs:可选,用在二维平面图上,设置指定属性,如标签,线的宽度等。
polar()绘制极坐标图
##配置

颜色字符,线的颜色可以使用 color 参数来定义,简写为 c:‘b’ 蓝色,‘m’ 洋红色,‘g’ 绿色,‘y’ 黄色,‘r’ 红色,‘k’ 黑色,‘w’ 白色,‘c’ 青绿色,‘#008000’ RGB 颜色符串。多条曲线不指定颜色时,会自动选择不同颜色。
线型参数,线的类型可以使用 linestyle 参数来定义,简写为 ls:‘‐’ 实线,‘‐‐’ 破折线,‘‐.’ 点划线,‘:’ 虚线。
标记字符marker :‘.’ 点标记,‘,’ 像素标记(极小点),‘o’ 实心圈标记,‘v’ 倒三角标记,‘^’ 上三角标记,‘>’ 右三角标记,‘<’ 左三角标记,"*"星号…等等。
线的宽度可以使用 linewidth 参数来定义,简写为 lw,值可以是浮点数,如:1、2.0、5.67 等。

可以自定义标记的大小与颜色,使用的参数分别是:
markersize,简写为 ms:定义标记的大小。
markerfacecolor,简写为 mfc:定义标记内部的颜色。
markeredgecolor,简写为 mec:定义标记边框的颜色。

import matplotlib.pyplot as plt
import numpy as np
x = np.arange(-10,11)
y = x**2 -2*x + 9
x1 = np.arange(-10,11)
y1 = x**2 -5*x + 5
plt.plot(x, y,'r+',x1, y1,'g+')
plt.plot(x, y,'r+',x1, y1,'g+')
plt.show()

python数据可视化插图

fmt 参数定义了基本格式,如标记、线条样式和颜色。
fmt = ‘[marker][line][color]’
例如 o:r,o 表示实心圆标记,: 表示虚线,r 表示颜色为红色。

import matplotlib.pyplot as plt
import numpy as np
ypoints = np.array([6, 2, 13, 10])
plt.plot(ypoints, marker = 'o', ms = 20, mfc = 'r')
plt.show()

python数据可视化插图(1)

import matplotlib.pyplot as plt
import numpy as np

y1 = np.array([3, 7, 5, 9])
y2 = np.array([6, 2, 13, 10])

plt.plot(y1)
plt.plot(y2)
plt.title("图形标题")
plt.xlabel("x 轴标题")
plt.ylabel("y 轴标题")
plt.grid()
plt.show()

python数据可视化插图(2)

绘制多图

subplot()

subplot() 方法在绘图时需要指定位置
subplot(nrows, ncols, index, **kwargs)
subplot(pos, **kwargs)
subplot(**kwargs)
subplot(ax)

import matplotlib.pyplot as plt
import numpy as np

#plot 1:
x = np.array([0, 6])
y = np.array([0, 100])

plt.subplot(2, 2, 1)
plt.plot(x,y)
plt.title("plot 1")

#plot 2:
x = np.array([1, 2, 3, 4])
y = np.array([1, 4, 9, 16])

plt.subplot(2, 2, 2)
plt.plot(x,y)
plt.title("plot 2")

#plot 3:
x = np.array([1, 2, 3, 4])
y = np.array([3, 5, 7, 9])

plt.subplot(2, 2, 3)
plt.plot(x,y)
plt.title("plot 3")

#plot 4:
x = np.array([1, 2, 3, 4])
y = np.array([4, 5, 6, 7])

plt.subplot(2, 2, 4)
plt.plot(x,y)
plt.title("plot 4")

plt.suptitle("RUNOOB subplot Test")
plt.show()

python数据可视化插图(3)

subplots()

matplotlib.pyplot.subplots(nrows=1, ncols=1, *, sharex=False, sharey=False, squeeze=True, subplot_kw=None, gridspec_kw=None, **fig_kw)

  • nrows:默认为 1,设置图表的行数。
    ncols:默认为 1,设置图表的列数。
  • sharex、sharey:设置 x、y 轴是否共享属性,默认为 false,可设置为 ‘none’、‘all’、‘row’ 或 ‘col’。 False 或 none 每个子图的x 轴或 y 轴都是独立的,True 或 ‘all’:所有子图共享 x 轴或 y 轴,‘row’ 设置每个子图行共享一个 x 轴或 y轴,‘col’:设置每个子图列共享一个 x 轴或 y 轴。
  • squeeze:布尔值,默认为 True,表示额外的维度从返回的Axes(轴)对象中挤出,对于 N1 或 1N 个子图,返回一个 1 维数组,对于 N*M,N>1 和 M>1 返回一个 2 维数组。如果设置为 False,则不进行挤压操作,返回一个元素为 Axes 实例的2维数组,即使它最终是1×1。
  • subplot_kw:可选,字典类型。把字典的关键字传递给 add_subplot() 来创建每个子图。
  • gridspec_kw:可选,字典类型。把字典的关键字传递给 GridSpec 构造函数创建子图放在网格里(grid)。
  • **fig_kw:把详细的关键字参数传给 figure() 函数。

散点图

matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, *, edgecolors=None, plotnonfinite=False, data=None, **kwargs)

  • x,y:长度相同的数组,也就是我们即将绘制散点图的数据点,输入数据。
  • s:点的大小,默认 20,也可以是个数组,数组每个参数为对应点的大小。
  • c:点的颜色,默认蓝色 ‘b’,也可以是个 RGB 或 RGBA 二维行数组。
  • marker:点的样式,默认小圆圈 ‘o’。
  • cmap:Colormap,默认 None,标量或者是一个 colormap 的名字,只有 c 是一个浮点数数组的时才使用。如果没有申明就是 image.cmap。
  • norm:Normalize,默认 None,数据亮度在 0-1 之间,只有 c 是一个浮点数的数组的时才使用。
  • vmin,vmax::亮度设置,在 norm 参数存在时会忽略。
  • alpha::透明度设置,0-1 之间,默认 None,即不透明。
  • linewidths::标记点的长度。
  • edgecolors::颜色或颜色序列,默认为 ‘face’,可选值有 ‘face’, ‘none’, None。
  • plotnonfinite::布尔值,设置是否使用非限定的 c ( inf, -inf 或 nan) 绘制点。
  • **kwargs::其他参数。
import numpy as np
import matplotlib.pyplot as plt

# 随机数生成器的种子
np.random.seed(19680801)


N = 50
x = np.random.rand(N)
y = np.random.rand(N)
colors = np.random.rand(N)
area = (30 * np.random.rand(N))**2  # 0 to 15 point radii

plt.scatter(x, y, s=area, c=colors, alpha=0.5) # 设置颜色及透明度

plt.title("RUNOOB Scatter Test") # 设置标题

plt.show()

python数据可视化插图(4)

柱形图

matplotlib.pyplot.bar(x, height, width=0.8, bottom=None, *, align=‘center’, data=None, **kwargs)

  • x:浮点型数组,柱形图的 x 轴数据。
  • height:浮点型数组,柱形图的高度。
  • width:浮点型数组,柱形图的宽度。
  • bottom:浮点型数组,底座的 y 坐标,默认 0。
  • align:柱形图与 x 坐标的对齐方式,‘center’ 以 x 位置为中心,这是默认值。 ‘edge’:将柱形图的左边缘与 x 位置对齐。要对齐右边缘的条形,可以传递负数的宽度值及 align=‘edge’。
  • **kwargs::其他参数。

垂直方向的柱形图可以使用 barh() 方法来设置

import matplotlib.pyplot as plt
import numpy as np

x = np.array(["Runoob-1", "Runoob-2", "Runoob-3", "C-RUNOOB"])
y = np.array([12, 22, 6, 18])

plt.bar(x, y, width = 0.1,color = ["#4CAF50","red","hotpink","#556B2F"])#设置柱形图颜色及宽度
plt.show()

python数据可视化插图(5)

饼图

matplotlib.pyplot.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=None, data=None)[source]

  • x:浮点型数组或列表,用于绘制饼图的数据,表示每个扇形的面积。
  • explode:数组,表示各个扇形之间的间隔,默认值为0。
  • labels:列表,各个扇形的标签,默认值为 None。
  • colors:数组,表示各个扇形的颜色,默认值为 None。
  • autopct:设置饼图内各个扇形百分比显示格式,%d%% 整数百分比,%0.1f 一位小数, %0.1f%% 一位小数百分比, %0.2f%% 两位小数百分比。
  • labeldistance:标签标记的绘制位置,相对于半径的比例,默认值为 1.1,如 <1则绘制在饼图内侧。
  • pctdistance::类似于 labeldistance,指定 autopct 的位置刻度,默认值为 0.6。
  • shadow::布尔值 True 或 False,设置饼图的阴影,默认为 False,不设置阴影。
  • radius::设置饼图的半径,默认为 1。
  • startangle::用于指定饼图的起始角度,默认为从 x 轴正方向逆时针画起,如设定 =90 则从 y 轴正方向画起。
  • counterclock:布尔值,用于指定是否逆时针绘制扇形,默认为 True,即逆时针绘制,False 为顺时针。
  • wedgeprops :字典类型,默认值 None。用于指定扇形的属性,比如边框线颜色、边框线宽度等。例如:wedgeprops={‘linewidth’:5} 设置 wedge 线宽为5。
  • textprops :字典类型,用于指定文本标签的属性,比如字体大小、字体颜色等,默认值为 None。
  • center :浮点类型的列表,用于指定饼图的中心位置,默认值:(0,0)。
  • frame :布尔类型,用于指定是否绘制饼图的边框,默认值:False。如果是 True,绘制带有表的轴框架。
  • rotatelabels :布尔类型,用于指定是否旋转文本标签,默认为 False。如果为 True,旋转每个 label 到指定的角度。
  • data:用于指定数据。如果设置了 data 参数,则可以直接使用数据框中的列作为 x、labels 等参数的值,无需再次传递。

pie() 函数还可以返回三个参数:

  • wedges:一个包含扇形对象的列表。
  • texts:一个包含文本标签对象的列表。
  • autotexts:一个包含自动生成的文本标签对象的列表。
import matplotlib.pyplot as plt
import numpy as np

y = np.array([35, 25, 25, 15])

plt.pie(y,
        labels=['A','B','C','D'], # 设置饼图标签
        colors=["#d5695d", "#5d8ca8", "#65a479", "#a564c9"], # 设置饼图颜色
        explode=(0, 0.2, 0, 0), # 第二部分突出显示,值越大,距离中心越远;默认情况下,第一个扇形的绘制是从 x 轴开始并逆时针移动:
        autopct='%.2f%%', # 格式化输出百分比
       )
plt.title("RUNOOB Pie Test")
plt.show()

python数据可视化插图(6)

直方图

matplotlib.pyplot.hist(x, bins=None, range=None, density=False, weights=None, cumulative=False, bottom=None, histtype=‘bar’, align=‘mid’, orientation=‘vertical’, rwidth=None, log=False, color=None, label=None, stacked=False, **kwargs)

  • x:表示要绘制直方图的数据,可以是一个一维数组或列表。
  • bins:可选参数,表示直方图的箱数。默认为10。
  • range:可选参数,表示直方图的值域范围,可以是一个二元组或列表。默认为None,即使用数据中的最小值和最大值。
  • density:可选参数,表示是否将直方图归一化。默认为False,即直方图的高度为每个箱子内的样本数,而不是频率或概率密度。
  • weights:可选参数,表示每个数据点的权重。默认为None。
  • cumulative:可选参数,表示是否绘制累积分布图。默认为False。
  • bottom:可选参数,表示直方图的起始高度。默认为None。
  • histtype:可选参数,表示直方图的类型,可以是’bar’、‘barstacked’、‘step’、‘stepfilled’等。默认为’bar’。
  • align:可选参数,表示直方图箱子的对齐方式,可以是’left’、‘mid’、‘right’。默认为’mid’。
  • orientation:可选参数,表示直方图的方向,可以是’vertical’、‘horizontal’。默认为’vertical’。
  • rwidth:可选参数,表示每个箱子的宽度。默认为None。
  • log:可选参数,表示是否在y轴上使用对数刻度。默认为False。
  • color:可选参数,表示直方图的颜色。
  • label:可选参数,表示直方图的标签。
  • stacked:可选参数,表示是否堆叠不同的直方图。默认为False。
  • **kwargs:可选参数,表示其他绘图参数。
import matplotlib.pyplot as plt
import numpy as np

# 生成三组随机数据
data1 = np.random.normal(0, 1, 1000)
data2 = np.random.normal(2, 1, 1000)
data3 = np.random.normal(-2, 1, 1000)

# 绘制直方图
plt.hist(data1, bins=30, alpha=0.5, label='Data 1')
plt.hist(data2, bins=30, alpha=0.5, label='Data 2')
plt.hist(data3, bins=30, alpha=0.5, label='Data 3')

# 设置图表属性
plt.title('RUNOOB hist() TEST')
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.legend()

# 显示图表
plt.show()

python数据可视化插图(7)

ggplot2

geoplotlib

本站无任何商业行为
个人在线分享 » python数据可视化
E-->