【问题标题】:DataFrame: how to draw a 3D graph using Index and Columns as x and y, and data as z?DataFrame:如何使用索引和列作为 x 和 y,数据作为 z 来绘制 3D 图?
【发布时间】:2021-12-30 16:22:22
【问题描述】:

我的DataFrame行索引和列索引存储xy值,而数据值是z值,即f(x, y)

举个例子:

import pandas as pd
df = pd.DataFrame([[150, 120, 170], [190, 160, 130]],
                  index=[2, 4], columns=[10, 30, 70])
print(df)
#     10   30   70
# 2  150  120  170
# 4  190  160  130

那么f(4, 30) 就是160

我想绘制函数f 的 3D 图。我真的不介意它看起来像 3D 直方图还是曲面图 - 两个答案都将不胜感激。

【问题讨论】:

    标签: python pandas dataframe plot


    【解决方案1】:

    您需要从您的行和列索引创建一个meshgrid,然后您可以使用plot_surface

    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    df = pd.DataFrame([[150, 120, 170], [190, 160, 130]],
                      index=[2, 4], columns=[10, 30, 70])
    x,y = np.meshgrid(df.columns, df.index)
    fig, ax = plt.subplots(subplot_kw={"projection": "3d"})
    ax.plot_surface(x, y, df)
    

    【讨论】:

    • 谢谢,但是上面的代码在我的机器上没有输出任何结果。您如何显示此图表?
    • 除非您使用 IPython,否则您需要添加 plt.show() 来显示绘图(对不起,我忘了提及)
    猜你喜欢
    • 1970-01-01
    • 2018-04-22
    • 1970-01-01
    • 1970-01-01
    • 2018-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多