想使用python 对一系列的表格进行批量化 整理和绘制曲线图
原表格是这样的
整理后和根据表格内的数据形成的曲线图,输出到一张图片里,这是之前VBA弄得
请各位帮忙。
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family'] = ['Heiti TC']
fig, axs =plt.subplots(2,1)
clust_data = np.random.random((10,3))
collabel=("列1", "列2", "列3")
axs[0].axis('tight')
axs[0].axis('off')
the_table = axs[0].table(cellText=clust_data,colLabels=collabel,loc='center')
axs[1].plot(clust_data[:,0],clust_data[:,1])
plt.show()
import pandas as pd
import matplotlib.pyplot as plt
# 将表格数据存储为字典
data = {
"TFEM22-100": ["点号", "00", "发射源编号", "客号"],
"T0": [0.0128, 0.0213, 0.0256, 0.0427, 0.0512, 0.0640, 0.0853, 0.1024, 0.1280, 0.1707, 0.2048, 0.2560, 0.3040, 0.3413, 0.4090, 0.5000, 0.5067, 0.5120, 0.6000, 0.6817, 0.8192, 0.8333, 0.9000, 1.0000, 1.0080, 1.1040, 1.2080, 1.5840, 1.6800, 1.7984, 1.8400],
"Rx(Q-0)": [594, 5.66, 5.57, 5.34, 4, 518, 5.05, 4.95, 481, 4.60, 4.40, 4.28, 4.06, 3.09, 415, 4.96, 3.79, 3.69, 3.62, 3.51, 3.47, 2.72, 3.42, 3.38, 3.34, 3.18, 1.52, 3.19],
"F(deg)": [-2.08, -3.02, 3.26, -40, 3.15, 42, 2.13, -1.57, -0.88, -0.08, 0.32, 0.64, 0.77, 0.81, -0.03, 0.69, 0.68, 0.58, 0.50, 0.26, 0.22, -0.02, 0.26, 0.18, -0.01, 0.05, 0.07, 0.06]
}
# 创建DataFrame对象
df = pd.DataFrame(data)
# 清除非数字的行(假设您只需要数值数据)
df = df.apply(pd.to_numeric, errors='coerce').dropna()
# 绘制曲线图
plt.plot(df['T0'], df['Rx(Q-0)'])
plt.xlabel('T0')
plt.ylabel('Rx(Q-0)')
plt.title('Curve')
plt.grid(True)
# 保存图像
plt.savefig('output.png')
# 显示图像
plt.show()
这样的话,你可以参考pandas,和 matplotlib 的接口
https://zhuanlan.zhihu.com/p/128034712
https://www.pypandas.cn/
matplotlib 的话,可以找找看api,或者使用pyecharts这个库
https://www.matplotlib.org.cn/gallery/
上面的参考一下,https://www.matplotlib.org.cn/gallery/这个是matplotlib的官方示例,可以看看有没有自己想要的效果的,把代码code下来修改一下就行了,matplotlib一些功能选项可以通过 api相关参数这些去设置的,这个也可以在matplotlib文档里找到自己想查看的api的相关说明
首先,你可以使用以下步骤使用python的matplotlib库来同时绘制表格和曲线图:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.ticker import MultipleLocator
准备数据: 准备一些需要绘制的数据。你可以将数据存储在numpy数组中,或者从其他数据源(如csv文件)中读取数据。
绘制表格: 使用Matplotlib库中的Table对象来绘制表格。首先,你需要创建一个表示表格数据的二维数组。然后,使用plt.table()函数将表格添加到图形中。
data = [['A', 'B', 'C'],
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
table = plt.table(cellText=data, loc='center', cellLoc='center')
table.scale(1, 1.5) # 调整表格的大小
x = np.linspace(-3, 3, 100)
y = np.sin(np.pi * x)
plt.plot(x, y, label='sin(x)')
plt.title('Table and Curve')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
# 自定义x轴刻度
x_major_locator = MultipleLocator(1)
ax = plt.gca()
ax.xaxis.set_major_locator(x_major_locator)
# 自定义y轴刻度
y_major_locator = MultipleLocator(0.2)
ax.yaxis.set_major_locator(y_major_locator)
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
完整的代码示例:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.ticker import MultipleLocator
# 绘制表格
data = [['A', 'B', 'C'],
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
table = plt.table(cellText=data, loc='center', cellLoc='center')
table.scale(1, 1.5) # 调整表格的大小
# 绘制曲线图
x = np.linspace(-3, 3, 100)
y = np.sin(np.pi * x)
plt.plot(x, y, label='sin(x)')
# 设置图形属性
plt.title('Table and Curve')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
# 自定义坐标轴刻度
x_major_locator = MultipleLocator(1)
ax = plt.gca()
ax.xaxis.set_major_locator(x_major_locator)
y_major_locator = MultipleLocator(0.2)
ax.yaxis.set_major_locator(y_major_locator)
# 去掉图像右上角边框线
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
plt.show()
这样就可以同时绘制表格和曲线图,并将它们整理到一张图片中。注意,你可以根据实际需求自定义表格和曲线图的样式和显示效果。
还请提供一下数据
数据提供下
python数据处理+matplotlib可视化(柱状图、折线图、表格)
可以参考下,非常详细
https://blog.csdn.net/waler1314/article/details/123129167
以下答案参考newbing,回答由博主波罗歌编写:
要同时绘制表格和曲线图,可以使用Python的matplotlib库。下面给出一个示例代码,演示如何批量处理一系列表格,并绘制相应的曲线图:
首先,确保已经安装了matplotlib库,可以使用以下命令进行安装:
pip install matplotlib
然后,可以使用pandas库来读取和处理表格数据,可以使用以下命令进行安装:
pip install pandas
接下来,我们将使用matplotlib的子模块pyplot来绘制图形,并使用pandas库来读取和处理表格数据。以下是示例代码:
import pandas as pd
import matplotlib.pyplot as plt
# 设置绘图参数,可根据需要进行修改
plt.rcParams['figure.figsize'] = [10, 5]
# 文件名列表,包含要处理的表格文件名
file_names = ['table1.csv', 'table2.csv', 'table3.csv']
# 循环处理每个表格文件
for file_name in file_names:
# 读取表格数据
df = pd.read_csv(file_name)
# 绘制曲线图
plt.plot(df['x'], df['y'], label=file_name) # x和y是表格中的列名
# 绘制表格,使用matplolib的table函数
# 设置表格位置和尺寸,根据需要进行调整
table = plt.table(cellText=df.values,
colLabels=df.columns,
cellLoc='center',
loc='bottom')
table.auto_set_font_size(False)
table.set_fontsize(10)
table.scale(1, 1.5)
# 设置图形标题和轴标签
plt.title('Curve plot with Table')
plt.xlabel('X')
plt.ylabel('Y')
# 显示图例
plt.legend()
# 保存图形到文件
plt.savefig(file_name.replace('.csv', '.png'))
# 关闭图形
plt.close()
在上面的代码中,我们使用了plt.plot
函数来绘制曲线图,plt.table
函数来绘制表格。可以根据实际需求进行参数设置,如图形的尺寸、位置、字体大小等。同时,我们还使用了plt.title
、plt.xlabel
和plt.ylabel
函数来设置图形的标题和轴标签。
在循环中,我们处理了每个表格文件,并将处理后的图像保存到相应的文件中。你可以根据实际情况修改文件名列表和图形相关设置。
希望以上代码能帮助到您,如果有任何问题,请随时提出。
如果我的回答解决了您的问题,请采纳!
可使用pandas数据处理转化,matplotlib进行图形的绘制。绘制曲线,网上一大把参考代码,你自己找下就可以,至于绘制表格,网上资料可能比较少,这里给你提供下绘制表格的代码:
import matplotlib.pyplot as plt
import numpy as np
data = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
plt.table(cellText=data, loc='center')
plt.axis('off')
plt.show()
后面你把曲线和表格 使用matplotlib库中的子图的用法,绘制到一张图上即可,怎么绘制子图,网上也是很多代码。这里不再赘述。
代码示例
import matplotlib.pyplot as plt
import numpy as np
# 创建数据数组
x = np.linspace(0, 10, 100)
y = np.sin(x)
# 创建图表对象和子图对象
fig, ax = plt.subplots(2, 1, figsize=(6, 8))
# 绘制曲线图
ax[0].plot(x, y)
ax[0].set_xlabel('x')
ax[0].set_ylabel('y')
ax[0].set_title('曲线图')
# 创建表格数据
table_data = np.random.rand(5, 3)
# 绘制表格
ax[1].axis('off')
ax[1].table(cellText=table_data, loc='center')
# 显示图表
plt.show()
回答部分参考、引用ChatGpt以便为您提供更准确的答案:
根据您的要求,您希望使用Python中的Matplotlib库同时绘制表格和曲线图。您提供的图片显示了原始表格和VBA代码的输出结果。下面是一种实现的方法:
以下是大致的代码框架,供参考:
import matplotlib.pyplot as plt
import pandas as pd
# 数据整理
# data_processing()
# 绘制表格
fig, ax = plt.subplots()
table_data = [['Header 1', 'Header 2'], ['Value 1', 'Value 2']] # 替换为您整理后的数据
table = ax.table(cellText=table_data, loc='center')
# 绘制曲线图
# plot_curve()
# 同时显示表格和曲线图
# add_subplot()
# 输出图片
plt.savefig('output.png')
# 显示图片
plt.show()
请根据您的具体数据和需求,适当调整代码并完善细节。Matplotlib库提供了丰富的功能和参数,可以根据您的需要进行进一步的定制和美化。
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
1. 创建数据:
```python
# 创建一些示例数据
x = np.linspace(0, 10, 100)
y = np.sin(x)
df = pd.DataFrame({'x': x, 'y': y})
fig, ax = plt.subplots()
ax.plot(df['x'], df['y'])
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_title('Sine Wave')