Python直角坐标系画图

一、平面直角坐标系

1.1 画一个点

# -*-coding:utf-8 -*-
'''
#------------------------------------
@author:By yangbocsu
@file: dot.py.py
@time: 2022.03.05
#------------------------------------
'''

import matplotlib.pyplot as plt
import numpy as np

import os
#matplotlib画图中中文显示会有问题,需要这两行设置默认字体
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False


# 0 数据准备   一个点的坐标
X = np.array([1])
Y = np.array([1])

# 1 设置x,y坐标轴的刻度显示范围
fig = plt.figure()
plt.xlim(xmin = 0, xmax = 2)                   # x轴的范围[0,2]
plt.ylim(ymin = 0, ymax = 2)                  # y轴的范围[0,2]
plt.xlabel('X')
plt.ylabel('Y')
# 调整x轴刻度(从0到+2,4等分)
plt.xticks(np.linspace(0, 2, 5))
# 调整y轴刻度
plt.yticks(np.linspace(0, 2, 5))

# 获取当前坐标轴gca即get current axis
ax = plt.gca()
ax.spines['top'].set_color('none') # 去掉上、右二侧的边框线
ax.spines['right'].set_color('none')

# # 给坐标轴加箭头
# plt.arrow(0, 2, 0, 0.01, width=0.02, color="k", clip_on=False, head_width=0.02, head_length=0.02)
# plt.arrow(2, 0, 0.01, 0, width=0.02, color="k", clip_on=False, head_width=0.02, head_length=0.02)

plt.title('画一个点')            #图的标题

# 2 画图显示 + 保存图像
plt.scatter(X, Y, marker = 'o', alpha=0.4, color="red", label='类别A')
plt.legend()                    #label='类别A' 图中显示

path = os.getcwd()              # 获取当前的工作路径
fileName = "979424151"
filePath = path + "\\" + fileName + ".png"

plt.savefig(filePath, dpi=600)   # dpi越大,图像越清晰,当然图像所占的存储也大

plt.show()

在这里插入图片描述

1.2 画两个点

# -*-coding:utf-8 -*-
'''
#------------------------------------
@author:By yangbocsu
@file: dot.py.py
@time: 2022.03.05
#------------------------------------
'''

import matplotlib.pyplot as plt
import numpy as np

import os
#matplotlib画图中中文显示会有问题,需要这两行设置默认字体
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False


# 0 数据准备   两个点的坐标
X = np.array([1,3])
Y = np.array([1,8])

xmx = X.max() + 1
ymx = Y.max() + 1
# 1 设置x,y坐标轴的刻度显示范围
fig = plt.figure()
plt.xlim(xmin = 0, xmax = xmx)                   # x轴的范围[0,2]
plt.ylim(ymin = 0, ymax = ymx)                  # y轴的范围[0,2]
plt.xlabel('X')
plt.ylabel('Y')
# 调整x轴刻度(从0到+2,4等分)
plt.xticks(np.linspace(0, xmx, int(xmx//0.50) + 1))
# 调整y轴刻度
plt.yticks(np.linspace(0, ymx, int(ymx//0.50) + 1))

# 获取当前坐标轴gca即get current axis
ax = plt.gca()
ax.spines['top'].set_color('none') # 去掉上、右二侧的边框线
ax.spines['right'].set_color('none')

# # 给坐标轴加箭头
# plt.arrow(0, 2, 0, 0.01, width=0.02, color="k", clip_on=False, head_width=0.02, head_length=0.02)
# plt.arrow(2, 0, 0.01, 0, width=0.02, color="k", clip_on=False, head_width=0.02, head_length=0.02)

plt.title('画两个点')            #图的标题

# 2 画图显示 + 保存图像
plt.scatter(X, Y, marker = 'o', alpha=0.4, color="red", label='类别A')
plt.legend()                    #label='类别A' 图中显示

path = os.getcwd()              # 获取当前的工作路径
fileName = "979424151"
filePath = path + "\\" + fileName + ".png"

plt.savefig(filePath, dpi=600)   # dpi越大,图像越清晰,当然图像所占的存储也大

plt.show()

在这里插入图片描述

1.3 画散点图

# -*-coding:utf-8 -*-
'''
#------------------------------------
@author:By yangbocsu
@file: dot.py.py
@time: 2022.03.05
#------------------------------------
'''
import matplotlib.pyplot as plt
import numpy as np
import os

#matplotlib画图中中文显示会有问题,需要这两行设置默认字体
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 0 数据准备   画一条直线:两点之间可以确定一条直线,①要么给出两点;②要么给出线上的所需要的点
X = np.arange(1,10,1)
Y = np.array([1,3,3,3,5,6,7,8,10])

xmx = X.max() + 2
ymx = Y.max() + 2

# 1 设置x,y坐标轴的刻度显示范围
fig = plt.figure()
plt.xlim(xmin = 0, xmax = xmx)                   # x轴的范围[0,2]
plt.ylim(ymin = 0, ymax = ymx)                  # y轴的范围[0,2]
plt.xlabel('X')
plt.ylabel('Y')
plt.title('画散点图')            #图的标题

# 2 画图显示 + 保存图像
plt.scatter(X, Y, marker = 'o', alpha=0.4, color="red", label='类别A')
plt.legend()                    #label='类别A' 图中显示

path = os.getcwd()              # 获取当前的工作路径
fileName = "979424151"
filePath = path + "\\" + fileName + ".png"

plt.savefig(filePath, dpi=600)   # dpi越大,图像越清晰,当然图像所占的存储也大

plt.show()

在这里插入图片描述

1.4 画直线

# -*-coding:utf-8 -*-
'''
#------------------------------------
@author:By yangbocsu
@file: dot.py.py
@time: 2022.03.05
#------------------------------------
'''
import matplotlib.pyplot as plt
import numpy as np
import os

#matplotlib画图中中文显示会有问题,需要这两行设置默认字体
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 0 数据准备   画一条直线:两点之间可以确定一条直线,①要么给出两点;②要么给出线上的所需要的点
X = np.arange(1,10,1)
Y = 0.5*X +1  # Y = kx + b

xmx = X.max() + 2
ymx = Y.max() + 2

# 1 设置x,y坐标轴的刻度显示范围
fig = plt.figure()
plt.xlim(xmin = 0, xmax = xmx)                   # x轴的范围[0,2]
plt.ylim(ymin = 0, ymax = ymx)                  # y轴的范围[0,2]
plt.xlabel('X')
plt.ylabel('Y')
plt.title('画散点图')            #图的标题

# 2 画图显示 + 保存图像
plt.scatter(X, Y, marker = 'o', alpha=0.4, color="red", label='类别A') # 画散点图
plt.plot(X,Y)   #画直线
plt.legend()                    #label='类别A' 图中显示

path = os.getcwd()              # 获取当前的工作路径
fileName = "979424151"
filePath = path + "\\" + fileName + ".png"

plt.savefig(filePath, dpi=600)   # dpi越大,图像越清晰,当然图像所占的存储也大

plt.show()

在这里插入图片描述

1.5 画抛物线

# -*-coding:utf-8 -*-
'''
#------------------------------------
@author:By yangbocsu
@file: dot.py.py
@time: 2022.03.05
#------------------------------------
'''
import matplotlib.pyplot as plt
import numpy as np
import os

#matplotlib画图中中文显示会有问题,需要这两行设置默认字体
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 0 数据准备    
X = np.arange(-5,5,0.1)
Y = X**2 + 1  # Y = x^2 + b

xmx = X.max() + 2
ymx = Y.max() + 2

# 1 设置x,y坐标轴的刻度显示范围
fig = plt.figure()
plt.xlim(xmin = -xmx, xmax = xmx)                   # x轴的范围[-xmx,xmx]
plt.ylim(ymin = -1, ymax = ymx)                     # y轴的范围[-1,xmx]
plt.xlabel('X')
plt.ylabel('Y')
plt.title('画抛物线')            #图的标题

# 2 画图显示 + 保存图像
plt.scatter(X, Y, marker = 'o', alpha=0.4, color="red", label='类别A') # 画散点图
plt.plot(X,Y)   #画直线
plt.legend()                    #label='类别A' 图中显示

path = os.getcwd()              # 获取当前的工作路径
fileName = "979424151"
filePath = path + "\\" + fileName + ".png"

plt.savefig(filePath, dpi=600)   # dpi越大,图像越清晰,当然图像所占的存储也大

plt.show()

在这里插入图片描述

1.6 画反比例函数

# -*-coding:utf-8 -*-
'''
#------------------------------------
@author:By yangbocsu
@file: dot.py.py
@time: 2022.03.05
#------------------------------------
'''
import matplotlib.pyplot as plt
import numpy as np
import os

#matplotlib画图中中文显示会有问题,需要这两行设置默认字体
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 0 数据准备
X = np.arange(-5,5,0.1)
Y = 1/X   # Y = 1/X

xmx = X.max() + 2
ymx = Y.max() + 2

# 1 设置x,y坐标轴的刻度显示范围
fig = plt.figure()
plt.xlim(xmin = -xmx, xmax = xmx)                   # x轴的范围[-xmx,xmx]
plt.ylim(ymin = -xmx, ymax = ymx)                     # y轴的范围[-1,xmx]
plt.xlabel('X')
plt.ylabel('Y')
plt.title('画反比例函数')            #图的标题

# 2 画图显示 + 保存图像
# plt.scatter(X, Y, marker = 'o', alpha=0.4, color="red", label='类别A') # 画散点图
plt.plot(X,Y)   #画直线
plt.legend()                    #label='类别A' 图中显示

path = os.getcwd()              # 获取当前的工作路径
fileName = "979424151"
filePath = path + "\\" + fileName + ".png"

plt.savefig(filePath, dpi=600)   # dpi越大,图像越清晰,当然图像所占的存储也大

plt.show()

在这里插入图片描述

1.7 画正弦函数

# -*-coding:utf-8 -*-
'''
#------------------------------------
@author:By yangbocsu
@file: dot.py.py
@time: 2022.03.05
#------------------------------------
'''
import matplotlib.pyplot as plt
import numpy as np
import os

#matplotlib画图中中文显示会有问题,需要这两行设置默认字体
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 0 数据准备
X = np.arange(-10,10,0.1)
Y = np.sin(X)

xmx = 12
ymx = 2

# 1 设置x,y坐标轴的刻度显示范围
fig = plt.figure()
plt.xlim(xmin = -xmx, xmax = xmx)                   # x轴的范围[-xmx,xmx]
plt.ylim(ymin = -2, ymax = ymx)                     # y轴的范围[-1,xmx]
plt.xlabel('X')
plt.ylabel('Y')
plt.title('画正弦函数')            #图的标题

# 2 画图显示 + 保存图像
# plt.scatter(X, Y, marker = 'o', alpha=0.4, color="red", label='类别A') # 画散点图
plt.plot(X,Y)   #画直线
plt.legend()                    #label='类别A' 图中显示

path = os.getcwd()              # 获取当前的工作路径
fileName = "979424151"
filePath = path + "\\" + fileName + ".png"

plt.savefig(filePath, dpi=600)   # dpi越大,图像越清晰,当然图像所占的存储也大

plt.show()

在这里插入图片描述

二、空间直角坐标系

2.1 空间画点

# -*-coding:utf-8 -*-
'''
#------------------------------------
@author:By yangbocsu
@file: zone.py
@time: 2022.03.05
#------------------------------------
'''

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
import os

#matplotlib画图中中文显示会有问题,需要这两行设置默认字体
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 绘图设置
fig = plt.figure()
ax = Axes3D(fig)

X = np.array([1])
Y = np.array([1])
Z = np.array([1])
ax.scatter(X, Y, Z, c = 'b', marker='o',label="A")

ax.set_xlabel('X 轴')
ax.set_ylabel('Y 轴')
ax.set_zlabel('Z 轴')
plt.legend()

path = os.getcwd()              # 获取当前的工作路径
fileName = "979424151"
filePath = path + "\\" + fileName + ".png"
plt.savefig(filePath, dpi=600)   # dpi越大,图像越清晰,当然图像所占的存储也大


plt.show()

在这里插入图片描述

2.2 空间画多点

# -*-coding:utf-8 -*-
'''
#------------------------------------
@author:By yangbocsu
@file: zone.py
@time: 2022.03.05
#------------------------------------
'''

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
import os

#matplotlib画图中中文显示会有问题,需要这两行设置默认字体
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 绘图设置
fig = plt.figure()
ax = Axes3D(fig)

X = np.arange(0,6,1)
Y = np.arange(0,6,1)
Z = np.arange(0,6,1)
ax.scatter(X, Y, Z, c = 'b', marker='o',label="A")

ax.set_xlabel('X 轴')
ax.set_ylabel('Y 轴')
ax.set_zlabel('Z 轴')
plt.legend()           #label="A"

path = os.getcwd()              # 获取当前的工作路径
fileName = "979424151"
filePath = path + "\\" + fileName + ".png"
plt.savefig(filePath, dpi=600)   # dpi越大,图像越清晰,当然图像所占的存储也大


plt.show()

在这里插入图片描述

2.3 空间画直线

# -*-coding:utf-8 -*-
'''
#------------------------------------
@author:By yangbocsu
@file: zone.py
@time: 2022.03.05
#------------------------------------
'''

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
import os

#matplotlib画图中中文显示会有问题,需要这两行设置默认字体
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 绘图设置
fig = plt.figure()
ax = Axes3D(fig)

X = np.array([1,2,4])
Y = np.array([1,2,4])
Z = np.array([1,2,4])
ax.scatter(X, Y, Z, c = 'b', marker='o',label="A")
ax.plot(X, Y, Z)                #画直线
ax.set_xlabel('X 轴')
ax.set_ylabel('Y 轴')
ax.set_zlabel('Z 轴')
plt.legend()           #label="A"

path = os.getcwd()              # 获取当前的工作路径
fileName = "979424151"
filePath = path + "\\" + fileName + ".png"
plt.savefig(filePath, dpi=600)   # dpi越大,图像越清晰,当然图像所占的存储也大


plt.show()

在这里插入图片描述

2.4 空间画抛物线

# -*-coding:utf-8 -*-
'''
#------------------------------------
@author:By yangbocsu
@file: zone.py
@time: 2022.03.05
#------------------------------------
'''

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
import os

#matplotlib画图中中文显示会有问题,需要这两行设置默认字体
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 绘图设置
fig = plt.figure()
ax = Axes3D(fig)

# X = np.arange(-2,2,0.01)
Y = np.arange(-2,2,0.01)
Z = - Y*Y
X = np.ones_like(Y)
 
ax.scatter(X, Y, Z, c = 'b', marker='o',label="A")
ax.plot(X, Y, Z)                #画直线
ax.set_xlabel('X 轴')
ax.set_ylabel('Y 轴')
ax.set_zlabel('Z 轴')
plt.legend()           #label="A"

path = os.getcwd()              # 获取当前的工作路径
fileName = "979424151"
filePath = path + "\\" + fileName + ".png"
plt.savefig(filePath, dpi=600)   # dpi越大,图像越清晰,当然图像所占的存储也大


plt.show()

在这里插入图片描述

### 如何在 Python 中使用 Matplotlib 绘制带有箭头的坐标轴 要在 Python 的 Matplotlib 库中绘制带有箭头的坐标轴,可以利用 `annotate` 函数或者直接调整线条样式来实现。以下是具体方法: #### 方法一:使用 `arrowstyle` 参数设置箭头 可以通过定义自定义箭头样式的参数并应用到图形对象上。 ```python import matplotlib.pyplot as plt import numpy as np fig, ax = plt.subplots() # 设置坐标范围 ax.set_xlim(-1, 5) ax.set_ylim(-1, 5) # 添加带箭头的X轴和Y轴 ax.annotate('', xy=(4.8, 0), xytext=(-0.2, 0), arrowprops=dict(facecolor='black', shrink=0.05, width=1, headwidth=7)) ax.annotate('', xy=(0, 4.8), xytext=(0, -0.2), arrowprops=dict(facecolor='black', shrink=0.05, width=1, headwidth=7)) # 显示网格以便更清晰观察效果 ax.grid(True) plt.show() ``` 上述代码片段展示了如何通过 `annotate()` 来添加具有箭头特性的坐标轴[^1]。 #### 方法二:手动绘制直线加箭头标记 另一种方式是先一条普通的线段作为坐标轴基础部分,再单独在其末端加上一个小三角形代表箭头方向。 ```python import matplotlib.pyplot as plt from matplotlib.patches import FancyArrowPatch fig, ax = plt.subplots(figsize=(6,6)) # 创建箭头实例 arr_x = FancyArrowPatch((-.1,-.1),(5,-.1), mutation_scale=20, lw=1, arrowstyle='-|>', color='k') arr_y = FancyArrowPatch((-.1,-.1),(-.1,5), mutation_scale=20, lw=1, arrowstyle='-|>', color='k') # 将箭头加入当前绘图区域 ax.add_patch(arr_x) ax.add_patch(arr_y) # 调整视窗大小适应新元素 ax.axis([-1,6,-1,6]) plt.show() ``` 这里采用了 `FancyArrowPatch` 类来自由定制箭头外观属性,并将其附加至指定位置形成完整的坐标体系。 以上两种方案均能有效达成目标——即构建具备指示功能的二维直角坐标系中的两个主要组成部分(横纵两向度量标准),同时保持视觉上的直观性和科学表达所需的精确程度[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yangbocsu

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值