How to insert a line over a heatmap using code?

조회 수: 50 (최근 30일)
Samantha Clayton
Samantha Clayton . 2018년 6월 14일
답변: Robert U . 2022년 9월 5일
How can I insert a line over a heatmap in my code? I would rather not use the figure tools manually because I have to do multiple lines.

답변 (2개)

Robert U
Robert U 2018년 6월 15일
Hi Samantha Clayton:
Since I do not know your code I can only demonstrate in the following example how to draw a vertical and a horizontal line into a contourf-plot (assuming you mean something like that).
Z = peaks(20);
ah = axes;
h = contourf(Z,10,'Parent',ah);
plot(ah,[0 25],[10 10],'white') % horizontal line
plot(ah,[10 10],[0 25],'white') % vertical line
ah.XLim = [2 20];
ah.YLim = [2 20];
There is a HeatMap-Command in Bioinformatics toolbox, so I do not know whether same strategy is working for that.
Kind regards,
  댓글 수: 3

댓글을 달려면 로그인하십시오.

Robert U
Robert U 2022년 9월 5일
Since the thread has be re-activated:
Here, a solution for heatmap tested in Matlab 2021b.
T = readtable('outages.csv');
h = heatmap(T,'Region','Cause');
% sloppy red line
annotation("line",[0.2 0.8],[0.2 0.8],"Color","red",'LineWidth',2)
% 2nd row horizontal line
plotLineThroughRowNr = 2;
nRow = numel(h.YData);
rowWidth = (h.InnerPosition(4))/(nRow);
lineYCoord = (nRow-plotLineThroughRowNr+0.5)*rowWidth + h.InnerPosition(2);
annotation("line",[h.InnerPosition(1) h.InnerPosition(1)+h.InnerPosition(3)],[lineYCoord lineYCoord],"Color","yellow",'LineWidth',2)
% 3rd column vertical line
plotLineThroughColumnNr = 3;
nColumn = numel(h.XData);
columnWidth = (h.InnerPosition(3))/(nColumn);
lineXCoord = (nColumn-plotLineThroughColumnNr+0.5)*columnWidth + h.InnerPosition(1);
annotation("line",[lineXCoord lineXCoord],[h.InnerPosition(2) h.InnerPosition(2)+h.InnerPosition(4)],"Color","magenta",'LineWidth',2)


Help CenterFile Exchange에서 Data Distribution Plots에 대해 자세히 알아보기


Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by