python matplotlib 如何同时绘制表格与曲线图

想使用python 对一系列的表格进行批量化 整理和绘制曲线图
原表格是这样的

img

整理后和根据表格内的数据形成的曲线图,输出到一张图片里,这是之前VBA弄得

img

请各位帮忙。

img


这种?


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的相关说明

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7661728
  • 这篇博客你也可以参考下:Matplotlib 常用画图命令总结:使用 Python 在论文中画出一手漂亮的数据图
  • 除此之外, 这篇博客: 用Python的matplotlib绘制残差分析散点误差棒图中的 文章目录 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

  • 您还可以看一下 李宁老师的Python数据可视化库:Matplotlib视频课程课程中的 在同一个窗口绘制直方图和盒状图小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    首先,你可以使用以下步骤使用python的matplotlib库来同时绘制表格和曲线图:

    1. 导入必要的库:
    import numpy as np
    import matplotlib.pyplot as plt
    from matplotlib.ticker import MultipleLocator
    
    1. 准备数据: 准备一些需要绘制的数据。你可以将数据存储在numpy数组中,或者从其他数据源(如csv文件)中读取数据。

    2. 绘制表格: 使用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)  # 调整表格的大小
    
    1. 绘制曲线图: 使用Matplotlib库中的plot()函数来绘制曲线图。首先,创建一个表示x轴和y轴数据的数组。然后,使用plt.plot()函数绘制曲线图。
    x = np.linspace(-3, 3, 100)
    y = np.sin(np.pi * x)
    
    plt.plot(x, y, label='sin(x)')
    
    1. 设置图形属性: 可以添加标题、坐标轴标签和图例等,以美化图形。
    plt.title('Table and Curve')
    plt.xlabel('x')
    plt.ylabel('y')
    plt.legend()
    
    1. 自定义坐标轴刻度: 如果需要更改坐标轴刻度的显示方式,可以使用plt.xticks()和plt.yticks()函数自定义刻度。例如,你可以使用MultipleLocator对象来设置刻度间隔。
    # 自定义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)
    
    1. 去掉图像右上角边框线: 如果需要去掉图像右上角的边框线,可以使用ax.spines['top'].set_visible(False)和ax.spines['right'].set_visible(False)函数。
    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.titleplt.xlabelplt.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代码的输出结果。下面是一种实现的方法:

  1. 导入必要的库:首先,您需要导入Python中的Matplotlib库和其他可能需要的库,如NumPy和Pandas。
  2. 数据整理:使用Pandas库读取原始表格数据,并进行必要的数据整理和处理,例如筛选、排序或聚合数据。根据您的需求,可以创建一个新的DataFrame来存储整理后的数据。
  3. 绘制表格:使用Matplotlib库的Table类,将整理后的数据绘制为表格。您可以指定表格的位置、样式和其他属性。
  4. 绘制曲线图:使用Matplotlib库的plot函数或其他相关函数,将数据绘制为曲线图。根据您提供的图片,可以将日期作为横轴,相关数据作为纵轴,使用折线图或其他适当的图形类型进行绘制。
  5. 同时显示表格和曲线图:使用Matplotlib库的figure和add_subplot函数,创建一个包含表格和曲线图的图形窗口。将绘制的表格和曲线图添加到不同的子图中,并调整布局和样式。
  6. 输出图片:使用Matplotlib库的savefig函数,将整个图形窗口保存为一张图片文件。

以下是大致的代码框架,供参考:

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库提供了丰富的功能和参数,可以根据您的需要进行进一步的定制和美化。

  1. 导入必要的库:
    ```python

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})

  1. 创建图形对象:

fig, ax = plt.subplots()

  1. 绘制曲线图:

ax.plot(df['x'], df['y'])
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_title('Sine Wave')