How to create this diagram?


This is a diagram used in the pinch analysis in chemical engineering.Please help me make it.

StreamNo	Condition	FCp	h	ST	TT	Q

0 1 Hot 1 0.4 250 120 -130
1 2 Hot 4 0.55 200 100 -400
2 3 Cold 3 0.75 90 150 180
3 4 Cold 6 0.65 130 190 360

temperature_hot	Hot1	Hot2	Cold3	Cold4	temperature_cold

0 250 | - - - 240
1 200 | | - | 190
2 160 | | | | 150
3 140 | | | - 130
4 120 - | | - 110
5 100 - - - - 90

fig, ax1 = plt.subplots()

ax2 = ax1.twinx()
# ax1.plot(range(1, len(cascade_diagram.columns[1:-1])+1), cascade_diagram.temperature_hot, 'g-')
# ax2.plot(range(1, len(cascade_diagram.columns[1:-1])+1), cascade_diagram.temperature_cold, 'b-')

ax1.set_yticks(cascade_diagram.temperature_hot.values)
ax1.set_yticklabels(cascade_diagram.temperature_hot.values)
ax2.set_yticks(cascade_diagram.temperature_cold.values)
ax2.set_yticklabels(cascade_diagram.temperature_cold.values)

ax1.set_xticks(range(1, 1+ len((cascade_diagram.columns[1:-1]))))
ax1.set_xticklabels(cascade_diagram.columns[1:-1])

ax2.set_xticks(range(1, 1+ len((cascade_diagram.columns[1:-1]))))
ax2.set_xticklabels(cascade_diagram.columns[1:-1])
ax1.set_xlim(0, 5)
ax1.set_ylim(*np.array(sorted(cascade_diagram.temperature_hot.values))[[0, -1]])
ax2.set_ylim(*np.array(sorted(cascade_diagram.temperature_cold.values))[[0, -1]])
for i, r in  heat_streams_data[heat_streams_data.Condition == "Hot"].iterrows():
    ax1.arrow(i + 1, r.ST, 0,r.TT - r.ST, head_width = 0.3,  
         head_length = 5, length_includes_head=True)
plt.axvline(x= 0 + ax1.get_xlim()[-1]/ 2, ls='--', lw=2)
for i, r in  heat_streams_data[heat_streams_data.Condition == "Cold"].iterrows():
    ax2.arrow(i + 1, r.ST, 0,r.TT - r.ST, head_width = 0.3,  
         head_length = 5, length_includes_head=True)
plt.show()
plt.grid()

Colors were not necessary
.

1 Like