当前位置: 首页 > 知识库问答 >
问题:

我如何使一个简单的轮廓图的熊猫DataFrame与数字单元格值为Z和标记行/列为X和Y坐标?

司徒耀
2023-03-14

我有一个Pandas DataFrame,luminance_df,看起来像这样:

到目前为止,我正在构建一个单一的多图表HTML文件,如下所示:

with open(os.path.join(cwd, 'testout.html'), 'w') as outfile:
    outfile.write("<p>&nbsp;</p><hr/><p>&nbsp;</p>".join(['<h1>Colors</h1>'+hex_styler.to_html(), '<h1>Hue</h1>'+hue_styler.to_html(), '<h1>Saturation</h1>'+saturation_styler.to_html(
    ), '<h1>Luminance</h1>'+luminance_styler.to_html(), '<h1>Perceived Brightness</h1>'+perceived_brightness_pivot_styler.to_html(), '<h1>Base Data</h1>'+basic_df.to_html()]))

我想在Luminance\u styler.to\u html()之后显示亮度的高程/等高线样式图,很像我在Excel中制作的这张图:

我希望颜色作为y轴上的值保持“从上到下”的排序,而深色作为x轴上的值保持“从左到右”的排序,就像上面的例子一样。

我不是数据科学家,也不经常使用Python。我为自己首先制作了luminance_df而自豪,但我并没有,就我的一生而言,弄清楚如何简单地制作Python...处理DataFrame中的数字单元格值,其双向标签都是字符串....作为z轴,并制作它的等高线图。

我在谷歌搜索的每件事都会引出非常复杂的数据科学问题。

有没有人能给我一个基本的“hello world”代码,让我在Python中使用luminance\u df的数据时,至少能像我在Excel中使用“插入图表”按钮时一样,使用它,让我走上正确的轨道?

如果你能让我得到一个img=BytesIO(),那就是image_base64=bas64. b64encode(img.read()). decode("utf-8")-able,我可以f'

我在Windows上,已将自己设置为能够pip安装

>

  • 公平地说,我发现这些等高线图表比Excel制作的更有吸引力,也更容易阅读,但是我可以接受某种“野蛮”的东西——看起来像Excel版本,只要它让“上升”

    虽然我希望图表的颜色遵循某种“彩虹”(因为我个人觉得它们很容易阅读),但图表上的任何“彩虹阴影”都应该完全忽略y轴标签恰好描述颜色这一事实。没有任何关联。我只是在16到98之间绘制数字事实;图表的颜色应该仅仅表示这两个极端之间“海拔”的变化。

    到目前为止,我发现的唯一一个类似的“简单”问题是将pandas DataFrame转换为3d图形,使用索引和列作为X,Y,值作为Z?,但这段代码对我根本不起作用,所以我甚至不知道它在视觉上输出了什么,所以我不知道它是否相关:

    from mpl_toolkits.mplot3d import Axes3D
    import matplotlib.pyplot as plt
    lumX = luminance_df.columns
    lumY = luminance_df.index
    lumZ = luminance_df.values
    fig = plt.figure()
    ax = plt.axes(projection = '3d')
    ax.contour3D(lumX,lumY,lumZ)
    

    我的脚本出现了一条错误消息:ValueError:无法将字符串转换为float:“orange”,我不知道我在做什么,以适应以下事实:这个答案似乎是围绕数字X轴和Y轴键的假设编写的。(此外,它可能不会生成我希望的图表类型——正如我所说,无法判断,因为它甚至不会执行,而且答案中也没有视觉样本。)

    准备<代码>熊猫。数据帧()

    {"barelyvisible":{"orange":96,"gold":96,"yellow":95,"chartreuse":95,"green":97,"forest":96,"aqua":97,"teal":96,"lightblue":97,"blue":97,"indigo":97,"purple":98,"royalpurple":98,"magenta":98,"pink":97,"dustypink":97,"red":97},"ultralight":{"orange":92,"gold":89,"yellow":88,"chartreuse":89,"green":93,"forest":90,"aqua":89,"teal":90,"lightblue":94,"blue":93,"indigo":94,"purple":95,"royalpurple":95,"magenta":95,"pink":95,"dustypink":95,"red":94},"light":{"orange":83,"gold":77,"yellow":77,"chartreuse":80,"green":85,"forest":80,"aqua":78,"teal":82,"lightblue":86,"blue":87,"indigo":89,"purple":92,"royalpurple":92,"magenta":91,"pink":90,"dustypink":90,"red":89},"abitlight":{"orange":72,"gold":65,"yellow":64,"chartreuse":67,"green":73,"forest":67,"aqua":64,"teal":69,"lightblue":74,"blue":78,"indigo":82,"purple":85,"royalpurple":85,"magenta":83,"pink":82,"dustypink":82,"red":82},"medium":{"orange":61,"gold":56,"yellow":53,"chartreuse":55,"green":58,"forest":52,"aqua":50,"teal":53,"lightblue":60,"blue":68,"indigo":74,"purple":76,"royalpurple":75,"magenta":73,"pink":70,"dustypink":71,"red":71},"abitdark":{"orange":53,"gold":50,"yellow":47,"chartreuse":44,"green":45,"forest":39,"aqua":40,"teal":43,"lightblue":48,"blue":60,"indigo":67,"purple":66,"royalpurple":65,"magenta":61,"pink":60,"dustypink":60,"red":60},"dark":{"orange":48,"gold":44,"yellow":40,"chartreuse":35,"green":36,"forest":30,"aqua":32,"teal":36,"lightblue":39,"blue":53,"indigo":59,"purple":58,"royalpurple":56,"magenta":49,"pink":51,"dustypink":50,"red":51},"evendarker":{"orange":40,"gold":37,"yellow":33,"chartreuse":27,"green":29,"forest":24,"aqua":26,"teal":31,"lightblue":32,"blue":48,"indigo":51,"purple":50,"royalpurple":47,"magenta":40,"pink":42,"dustypink":41,"red":42},"ultradark":{"orange":34,"gold":31,"yellow":29,"chartreuse":23,"green":24,"forest":20,"aqua":22,"teal":27,"lightblue":27,"blue":40,"indigo":41,"purple":42,"royalpurple":39,"magenta":33,"pink":35,"dustypink":35,"red":35},"almostblack":{"orange":28,"gold":26,"yellow":26,"chartreuse":20,"green":20,"forest":16,"aqua":19,"teal":24,"lightblue":24,"blue":33,"indigo":34,"purple":35,"royalpurple":32,"magenta":28,"pink":30,"dustypink":30,"red":31}}
    
  • 共有1个答案

    许学真
    2023-03-14

    我相信你只需要做一个countourf

    plt.contourf(df, cmap='RdYlBu')
    plt.xticks(range(df.shape[1]), df.columns, rotation=90)
    plt.yticks(range(df.shape[0]), df.index)
    plt.show()
    

    输出:

    或热图:

    import seaborn as sns
    sns.heatmap(df, cmap='RdYlBu')
    

    输出:

     类似资料:
    • 我正在尝试用熊猫数据框创建一个3d volatlity曲面,我觉得我已经掌握了所有信息,但我不确定如何从中创建3d图形。我读过的每一本指南似乎都使用了3个独立的数组,但我觉得我拥有的数据应该是可绘制的。 我当前的数据帧如下所示: 我希望我的X值是我的索引,Y值是列名(月份),Z值是框架中包含的实际值(例如,第一行第一列中的第一个值...X=35,Y=9/20/2019,Z=0.0879441) 环

    • 我有一个非常简单的问题。我想在熊猫数据帧的给定行的给定列中更改一个值。我尝试通过以下方式完成: 结果,我得到以下警告: 我对这个警告的解释是,通过使用列名称()和我实际上无法访问(引用)数据帧的所需单元格。相反,我创建了一个对象,它是“单元格”对象的副本,然后尝试更改与该“副本对象”关联的值。 我不明白的是,它似乎有效。尽管pandas给我写信说我试图修改副本,但我确实修改了原始数据帧。 我的问题

    • 问题内容: 有没有一种简单的方法来获取绘制如下轮廓线的(x,y)值: 问题答案: 查看返回的ContourSet的collections属性。特别是第一个集合的get_paths()方法返回组成每个线段的成对点。 要获取坐标的NumPy数组,请使用属性。

    • 当我在ipython笔记本中绘制熊猫系列并根据这个答案设置标签时: 并对细胞进行评估。绘图显示标题,但不显示x或y标签。如何在ipython笔记本中执行此操作? 还有Chrispy在那篇帖子上的评论 为什么x和y标签不能作为参数添加到pd.plot()中? 也可能是一个值得回答的相关问题。 编辑:谢谢,现在我知道错误,我的错。但是为什么它没有给我一个错误的值分配给方法

    • 下面是一个包含两列两行的简单表的代码。是否有人可以修改它,或者用简单的术语来解释,我如何为行标题的目的呈现最左边的列。 谢谢你。

    • 我有一张以色列地图。 我需要创建一个获得两个双参数(经度和纬度)的函数,该函数应该在地图图像中的那个区域上画一个小圆圈。 我有以下关于地图的信息: null 截图: https://gyazo.com/5a19dece37ebace496c6b8d68eb9ec3c