首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ploty热图绘制50y坐标

Ploty热图绘制50y坐标
EN

Stack Overflow用户
提问于 2022-09-28 08:12:08
回答 3查看 32关注 0票数 0

我有这样的数据,我想绘制一个热图,例如数据:

代码语言:javascript
复制
ID       Year       A          B        C
ID1      1971       5          100      0.5
ID1      1972       6          102      0.4
ID1      1981       4          101      0.6
ID1      1991       5          103      0.5
ID1      1993       2          104      0.4
ID2      1971       4          100      0.9
ID2      1973       4          108      0.8
ID2      1981       5          109      0.7
ID2      1991       3          106      0.6
ID2      1993       3          103      0.5

我试图用平地绘制一个热图,但图中只显示了50个y坐标。我的数据包含大约10.000个唯一ID:

代码语言:javascript
复制
import plotly.graph_objects as go
import pandas as pd
df = pd.read_csv("my_data.csv")
fig = go.Figure(data=go.Heatmap(
    z=df['B'],
    x=df['Year'],
    y=df['ID'],
    colorscale='Viridis'))
fig.write_html("test.html")

如何绘制整个数据集?

EN

回答 3

Stack Overflow用户

发布于 2022-09-28 08:34:02

对于热图,z应该是一个二维数组,但是你只给出一个一维的级数,所以可能会有一些不匹配。也许您可以在绘制之前进行一些整形,例如创建一个大小合适的矩阵,并根据您的数据集更新每个元素的值。不过,要注意缺少的价值。这里需要些体力活。

票数 0
EN

Stack Overflow用户

发布于 2022-09-28 09:20:27

  • 获取了您的示例数据,并将其放大到1000个is (
  • ),所有1000个is都在绘制,只是轴是一个示例(查看悬停信息)

代码语言:javascript
复制
import plotly.graph_objects as go
import pandas as pd
import io
import numpy as np

# df = pd.read_csv("my_data.csv")
df = pd.read_csv(
    io.StringIO(
        """ID       Year       A          B        C
ID1      1971       5          100      0.5
ID1      1972       6          102      0.4
ID1      1981       4          101      0.6
ID1      1991       5          103      0.5
ID1      1993       2          104      0.4
ID2      1971       4          100      0.9
ID2      1973       4          108      0.8
ID2      1981       5          109      0.7
ID2      1991       3          106      0.6
ID2      1993       3          103      0.5"""
    ),
    sep="\s+",
)

# bulk up sample data to 1000 IDs
df = pd.concat(
    [
        df.assign(
            ID=np.repeat([f"ID{i+1}", "ID{i+2}"], len(df) // 2),
            B=np.random.randint(df["B"].min(), df["B"].max(), len(df)),
        )
        for i in range(1000)
    ]
)

fig = go.Figure(
    data=go.Heatmap(z=df["B"], x=df["Year"], y=df["ID"], colorscale="Viridis")
)

fig

票数 0
EN

Stack Overflow用户

发布于 2022-09-28 11:53:37

随着热图大小的增加,现在显示所有ID:

Solution

代码语言:javascript
复制
fig.update_layout(title="Correlation heatmap",
              yaxis={"title": 'Test'},

              height=10000,
              xaxis={"title": 'Test',"tickangle": 13000} )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73878190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档