Skip to content
Menu
Nameless的摸鱼笔记 Nameless的摸鱼笔记
  • 示例页面
Nameless的摸鱼笔记 Nameless的摸鱼笔记

python可视化

Posted on 2022年2月18日2022年4月9日 by Nameless

1.绘制心形状曲线

极坐标绘制

安装库

pip install matplotlib

matplotlib模块为可视化模块,其中matplotlib.pyplot(缩写为plt)是一个画图能力极强的模块(plot-v.绘图),附带的numpy(缩写为np)是一个极强的支持数学运算的库,类似于c的math库

步骤

列库

import matplotlib.pyplot as plt
import numpy as np

函数定义域

d=np.linspace(0.0,np.pi*2,1000) ##(左端点,右端点,点的个数)

值域

f=a*(1-np.sin(d))

绘图

plt.subplot(polar=True) ##polar-n.极坐标 投影方式为极坐标
plt.plot(d,f,c='r') ##定义域 运算法则 颜色
plt.show() ##画图

总代码

import matplotlib.pyplot as plt
import numpy as np

d=np.linspace(0.0,np.pi*2,1000)
a=10
f=a*(1-np.sin(d))
plt.subplot(polar=True)
plt.plot(d,f,c='r')
plt.show()

成品

关于每一个x如何和y或每一个θ如何和p对应的猜想

x=np.linspace(s,e,num)的工作原理其实是形成了x=[s,…,e]这样一个大小为num的数组——定义域

而y=function(x)其实是形成了y=[f(s),…,f(e)]这样的大小也为num的数组——值域

重点来了,plt.plot(x,y,color)其实是在图上画出(x[0],y[0])这个点,然后再画(x[1],y[1])…..最后画(x[num-1],y[num-1]),然后就形成了整个图像

直角坐标绘制

import matplotlib.pyplot as plt
import numpy as np

theta=np.linspace(0.0,np.pi*2,1000)
sintheta=np.sin(theta)
costheta=np.cos(theta)
a=5
y=a * sintheta*(1-sintheta)
x=a * costheta*(1-sintheta)
plt.plot(x,y,c='r')
plt.show()

ps

将一个普通方程改写为参数方程真的能减少一些坐标轴反转的操作

2.绘制带有网格的散点图

#导入必要的模块  
import numpy as np  
import matplotlib.pyplot as plt  
import matplotlib.colors as mcolors
#产生测试数据 
x = np.array(range(41))
y = x
colors = list(mcolors.TABLEAU_COLORS.keys())
plt.figure(figsize=[10, 10])
plt.xticks(x),plt.yticks(y)    
plt.grid(linestyle='-',linewidth = 1, color = mcolors.TABLEAU_COLORS[colors[7]])   # linewidth并不是网格宽度而是网格线的粗细
f=open('test.txt','r')
door_size=int(f.readline())
n=int(f.readline())
line=f.readline()
f_i=0
f_j=0
door_x=0
door_y=0
if_door=0
#设置标题  
##ax1.set_title('Scatter Plot')  
while line :
    f_j=0
    for i in line:
            if i == '1':
                plt.scatter(f_i+0.5,f_j+0.5,c = 'r',marker = '.')  
                f_j+=1       
            elif i == '2':
                plt.scatter(f_i+0.25,f_j+0.75,c = 'r',marker = '.')  
                plt.scatter(f_i+0.75,f_j+0.25,c = 'r',marker = '.')  
                f_j+=1
            elif i == '-':
                door_x=f_i
                door_y=f_j
                break
            elif i== '0':
                f_j+=1
    f_i+=1
    line=f.readline()

for i in range(0,n+1):
    plt.scatter(0,i,c = 'black',linewidths=3,marker = 's')

for i in range(0,n+1):
    plt.scatter(i,0,c = 'black',linewidths=3,marker = 's')

for i in range(0,n+1):
    plt.scatter(n,i,c = 'black',linewidths=3,marker = 's')

for i in range(0,n+1):
    plt.scatter(i,n,c = 'black',linewidths=3,marker = 's')

for i in range(door_x+1,door_x+door_size+1):
    plt.scatter(i,door_y,c = 'white',linewidths=3,marker = 's')

plt.show()  

成品

发表回复 取消回复

要发表评论,您必须先登录。

近期文章

  • 关于Nokelock蓝牙锁破解分析
  • 基于树莓派的蓝牙调试环境搭建
  • shell之外的往事:机械兔子
  • [Googlectf2022]硬件题weather
  • 嵌入式设备组播路由攻击实战

近期评论

    归档

    • 2023年4月
    • 2023年3月
    • 2023年1月
    • 2022年10月
    • 2022年9月
    • 2022年8月
    • 2022年7月
    • 2022年5月
    • 2022年4月
    • 2022年3月
    • 2022年2月

    分类

    • fuzz
    • hardware
    • Linux
    • oi
    • PWN
    • python
    • shell之外的往事
    • 嵌入式开发
    • 未分类
    • 比赛题解
    • 程序设计实战

    其他操作

    • 登录
    • 条目feed
    • 评论feed
    • WordPress.org

    朋友们

    chuj
    夜魅楠孩
    x1ng
    pankas
    杨宝
    h4kuy4
    大能猫
    t0hka
    hash_hash
    nightu
    yolbby
    JBNRZ
    oacia
    l0tus
    Korey0sh1

    ©2022 Nameless的摸鱼笔记

    蜀ICP备2022004715号

    ©2023 Nameless的摸鱼笔记 | Powered by WordPress & Superb Themes