悬臂梁载荷谱f(x)=10+x^2

本文介绍了如何使用Python的matplotlib和numpy库,根据给定的函数关系计算和可视化二维数据的载荷值,展示了如何创建网格、应用函数、绘制图像以及添加颜色标尺。
摘要由CSDN通过智能技术生成

问题描述

x方向范围是(0,60)有21个点,y方向范围是(-3,3)有3个点,load的形状为(21,3),每个load的值为这些位置上的载荷值,并且载荷值跟x有函数关系f=10+x^2,做出载荷谱。

代码

import matplotlib.pyplot as plt
import numpy as np


# 根据指定的函数计算载荷值
def load_function(x):
    return 10 + x ** 2


# 创建x和y坐标的网格
# x = np.arange(21)
# y = np.arange(3)
x = np.linspace(0, 60, 21)
y = np.linspace(-3, 3, 3)
xx, yy = np.meshgrid(x, y)

# import pdb
# pdb.set_trace()

# 计算载荷值
load = load_function(xx)

# 在新的matplotlib窗口中绘制数组
plt.close("all")
fig, ax = plt.subplots()    # fig = <Figure size 640x480 with 1 Axes>

# 显示载荷值的图像
im = ax.imshow(load, cmap='viridis', origin='lower')

# 添加色标
fig.colorbar(im, ax=ax, label='Sum of Z Values')

# 设置标签
ax.set_xlabel('X')
ax.set_ylabel('Y')
# 设置x和y轴的数值,x=(0, 60),y=(-3, 3),如果想要x从0-20显示x则不需要这几段代码
ax.set_xticks(range(0, len(x)))
ax.set_yticks(range(0, len(y)))
ax.set_xticklabels(map(int, x))
ax.set_yticklabels(map(int, y))

# 保存图像,必须在plt.show()之前调用保存图像,否则图像被清空了
plt.savefig("true_load_plotting_1.png", dpi=300)
# 展示图像
plt.show()


'''
import matplotlib.pyplot as plt
import numpy as np

# 假设你已经创建了名为`action`的(1,21,3)维度的数组
# 注意,这里为了演示,我将创建一个随机数组。你的实际数组应从你的算法或数据获得。

action = np.random.rand(1, 21, 3)

# 用上述代码进行可视化
# 首先关闭现有的图像
plt.close("all")

# 然后创建新的图像
fig, ax = plt.subplots()

# 将行动值的形状调整为21x3,并使用颜色图显示图像
im = ax.imshow(action.reshape(21, 3), cmap='viridis', interpolation='spline16', origin='lower')

# 添加颜色条
fig.colorbar(im, ax=ax, label='Sum of Z Values')

# 设置标签
ax.set_xlabel('X')
ax.set_ylabel('Y')

# 展示图像
plt.show()
'''

代码解释

import matplotlib.pyplot as plt
import numpy as np

上面的这两行是Python的常见导入。我们需要matplotlib.pyplot来画出我们的数据图,numpy则是用于浮点范围和数组。

def load_function(x):
    return 10 + x**2

这个函数定义了用于生成载荷值的公式。它接收一个值x,并返回一个值,这个值是10+x²。

x = np.linspace(0, 60, 21)
y = np.linspace(-3, 3, 3)
xx, yy = np.meshgrid(x, y)

这部分代码创建了一个坐标网格。np.linspace(a, b, c)在a和b之间创建了c个等距的值。np.meshgrid(x, y)会返回一个坐标矩阵,为我们在这个矩阵上为每个x和y组合产生一个载荷值。

action = load_function(xx)

这句代码将我们的载荷函数应用在了所有的x值上。结果会形成一个二维数组,这个数组和我们的坐标网格有着相同的形状。

plt.close("all")
fig, ax = plt.subplots()

plt.close("all")确保了之前打开的其他图形窗口都被关闭,以便我们的新图形显示。plt.subplots()返回一个图形对象和一个轴对象,用于创建和定制我们的图形。

im = ax.imshow(action, cmap='viridis', origin='lower')

ax.imshow(data, cmap, origin)显示一个数据数组。我们在这里使用数据矩阵action,颜色映射(cmap)是'viridis'(这是一种渐变的颜色映射,它可以用颜色强度来表示数值的大小),并设置origin='lower'使得图像的原点在左下角。

fig.colorbar(im, ax=ax, label='Sum of Z Values')

这行代码添加了一个色标,这是一个解释色彩映射与数值关系的工具。

ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_xticks(range(0, len(x)))
ax.set_yticks(range(0, len(y)))
ax.set_xticklabels(map(int, x))
ax.set_yticklabels(map(int, y))

这个部分设置了x轴和y轴的标签以及刻度。我们使用set_xticks()set_yticks()来设置轴的刻度位置。set_xticklabels()set_yticklabels()设置了每个刻度的标签。在这里,我们设置了标签以使它们表示了x和y的实际值,而不只是矩阵的索引。

plt.show()

最后,plt.show()命令将图形展示出来。matplotlib使用一个"当前图形"的概念,即你创建的最近一个图形或子图。plt.show()显示了这个"当前的图形"。

  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值