首页 > 编程语言 >180122 特征值与特征向量的几何解释与python代码,附matplotlib绘制多边形

180122 特征值与特征向量的几何解释与python代码,附matplotlib绘制多边形

时间:2023-04-03 12:31:25浏览次数:57  
标签:特征向量 180122 ec fc matplotlib np ax transf data


How to Plot Polygons in Python
Shapely-Manual
Shapely-Test
3Blue1Brown-线性代数的几何解释
Downloads
Shapely-Windows
Shapely-Mac or Linux

180122 特征值与特征向量的几何解释与python代码,附matplotlib绘制多边形_特征值

180122 特征值与特征向量的几何解释与python代码,附matplotlib绘制多边形_特征向量_02

  • 红色 基坐标(竖着看)
    1 0
    0 1
  • 绿色 变换矩阵(竖着看)
    3 1
    0 2
  • 蓝色 特征向量(竖着看)
    1−2√2
    02√2
  • 黑色 变换矩阵(左乘)特征向量(竖着看)
    3−2√
    02√

特征向量与特征值得几何含义
特征向量:原始向量在进行线性旋转变换(左乘矩阵)后仍留在其所张成的空间的向量。
特征值:即特征向量进行线性变换后,留在原空间中变换的比例。

# -*- coding: utf-8 -*-
"""
Created on Wed Mar 11 18:51:08 2015
@author: Duncan
A simplified version of linearring.py, one of the shapely examples
"""

from matplotlib import pyplot as plt
from shapely.geometry.polygon import Polygon
from descartes import PolygonPatch
import numpy as np

def drawArrow1(B,c="data",):

    # fc: filling color
    # ec: edge color
    if c=='data':
        fc='r'
        ec='r'
        s=0.25
    elif c=='transf':
        fc='g'
        ec='g'
        s=0.15
    elif c=='eigenv':
        fc='b'
        ec='b'
        s=0.1
    else:
        fc='k'
        ec='k'
        s=0.08

    ax.arrow(0, 0, B[0], B[1],
             length_includes_head=True,# 增加的长度包含箭头部分
             head_width=s, head_length=s, fc=fc, ec=ec,label='abc')
    # 注意: 默认显示范围[0,1][0,1],需要单独设置图形范围,以便显示箭头
    ax.set_xticks(np.linspace(-3,4,8))
    ax.set_yticks(np.linspace(-1,4,6))
    ax.set_aspect('equal') #x轴y轴等比例

#%%
fig, ax = plt.subplots()
data_origin = np.array([[1,0],[0,1]]) 
data_transf = np.array([[3,1],[0,2]]).T
data = np.vstack((data_origin,data_transf))
c = ['data','data','transf','transf']
for i,j in zip(data,c):
    drawArrow1(i,j)
#%%
D,V = np.linalg.eig(data_transf.T)
c = ['eigenv','eigenv']
for i,j in zip(V.T,c):
    print(i,j)
    drawArrow1(i,j)
ax.grid()
#%%
dt = np.dot(data_transf.T,V).T
drawArrow1(dt[0],c='after transfer')
drawArrow1(dt[1],c='after transfer')
print(dt)
#%%
ring_mixed = Polygon([(0, 0), V.T[0], V.T[1]])
ring_patch = PolygonPatch(ring_mixed,fc='yellow', ec='yellow', alpha=0.5)
ax.add_patch(ring_patch)
#%%
plt.savefig('arrow.png', transparent = True, bbox_inches = 'tight', pad_inches = 0.25)


标签:特征向量,180122,ec,fc,matplotlib,np,ax,transf,data
From: https://blog.51cto.com/guokliu/6166028

相关文章

  • Python 调用Matplotlib 读取txt、csv文件画图
    目录PythonMatplotlib读取txt、csv文件绘图使用方法PythonMatplotlib读取txt、csv文件绘图show_data.pyimportsysimportmatplotlib.pyplotaspltplt.rcParams['font.sans-serif']=['SimHei']#用来正常显示中文标签plt.rcParams['axes.unicode_minus']=False#用来......
  • 概率论与数理统计及其应用学习笔记1(numpy+matplotlib)
    先把基本概念都理一遍,博客的后半部分会上具体函数实现,没有前半部分的基础,后半部分看起来会有点吃力样本空间:某个实验的所有可能结果组成的集合样本点:样本空间的每个结......
  • pyinstaller 打包报错Failed to determine matplotlib‘s data directory
    #fromPyInstaller.utils.hooksimportexec_statement##mpl_data_dir=exec_statement(#"importmatplotlib;print(matplotlib.get_data_path())")#assert......
  • matplotlib时间线画图
    importmatplotlib.pyplotaspltimportnumpyasnpimportmatplotlib.datesasmdatesfromdatetimeimportdatetimeplt.rcParams['font.sans-serif']=['simhei']......
  • matplotlib:python数据处理三剑客之一
    1.基本使用importnumpyasnpimportmatplotlib.pyplotaspltimportpandasaspd#生成一系列xx=np.linspace(-1,1,50)#生成对应的yy1=2*x+1y2=x......
  • 大佬们,matplotlib安装不上,怎么破?
    大家好,我是皮皮。一、前言前几天在Python最强王者交流群【Feng】问了一个Python基础的问题,这里拿出来给大家分享下。他遇到的问题是新版本的Python中能安装上matplotli......
  • Matplotlib库画分布图和直方图
    首先我们一定要区分直方图和分布图,因为这完全是两个不同的概念。举例来说:有一个list,里面有1000个int值,当我们对这个list统计分布图时,需要对统计出现在list中的所有数值,......
  • 软件测试|教你用Matplotlib绘制多种饼图
    前言之前我们介绍了使用matplotlib绘制柱状图等图像,这篇文章我们将介绍使用matplotlib绘制饼状图,并且我们将介绍使用matplotlib绘制不同类型的饼图,下面我们直接开始绘制。绘......
  • python--matplotlib(3)
    前言 Matplotlib画图工具的官网地址是http://matplotlib.org/Python环境下实现Matlab制图功能的第三方库,需要numpy库的支持,支持用户方便设计出二维、三维数据的图形显示,制......
  • python--matplotlib(1)
    目录​​前言 ​​​​正文​​​​1.arange函数​​​​ 2.绘制sin(x)曲线​​​​3.给sin()加标题,控制x,y轴​​​​4.linspace函数​​​​5.使用linspace函数画一个......