Plotly - พล็อตย่อยและพล็อต Inset

ที่นี่เราจะเข้าใจแนวคิดของพล็อตย่อยและพล็อตที่แทรกใน Plotly

การสร้าง Subplots

บางครั้งการเปรียบเทียบมุมมองข้อมูลที่แตกต่างกันก็เป็นประโยชน์ สิ่งนี้สนับสนุนแนวคิดเรื่องพล็อตย่อย มันมีmake_subplots() ฟังก์ชันใน plotly.tools module. ฟังก์ชันส่งคืนวัตถุรูป

คำสั่งต่อไปนี้สร้างสองพล็อตย่อยในหนึ่งแถว

fig = tools.make_subplots(rows = 1, cols = 2)

ตอนนี้เราสามารถเพิ่มการติดตามที่แตกต่างกันสองรายการ (การติดตามประสบการณ์และบันทึกในตัวอย่างด้านบน) ลงในรูป

fig.append_trace(trace1, 1, 1)
fig.append_trace(trace2, 1, 2)

เค้าโครงของรูปได้รับการกำหนดค่าเพิ่มเติมโดยการระบุ title, width, height, ฯลฯ โดยใช้ update() วิธี.

fig['layout'].update(height = 600, width = 800s, title = 'subplots')

นี่คือสคริปต์ที่สมบูรณ์ -

from plotly import tools
import plotly.plotly as py
import plotly.graph_objs as go
from plotly.offline import iplot, init_notebook_mode
init_notebook_mode(connected = True)
import numpy as np
x = np.arange(1,11)
y1 = np.exp(x)
y2 = np.log(x)
trace1 = go.Scatter(
   x = x,
   y = y1,
   name = 'exp'
)
trace2 = go.Scatter(
   x = x,
   y = y2,
   name = 'log'
)
fig = tools.make_subplots(rows = 1, cols = 2)
fig.append_trace(trace1, 1, 1)
fig.append_trace(trace2, 1, 2)
fig['layout'].update(height = 600, width = 800, title = 'subplot')
iplot(fig)

นี่คือรูปแบบของตารางพล็อตของคุณ: [(1,1) x1, y1] [(1,2) x2, y2]

พล็อตที่ใส่ไว้

ในการแสดงแผนภาพย่อยเป็นสิ่งที่ใส่เข้าไปเราจำเป็นต้องกำหนดค่าวัตถุการติดตาม ก่อนอื่นxaxis และคุณสมบัติ yaxis ของการติดตามสิ่งที่ใส่เข้าไป ‘x2’ และ ‘y2’ตามลำดับ คำสั่งต่อไปนี้ทำให้‘log’ ติดตามในสิ่งที่ใส่เข้าไป

trace2 = go.Scatter(
   x = x,
   y = y2,
   xaxis = 'x2',
   yaxis = 'y2',
   name = 'log'
)

ประการที่สองกำหนดค่าโครงร่างวัตถุที่ตำแหน่งของแกน x และ y ของสิ่งที่ใส่เข้าไปถูกกำหนดโดย domain คุณสมบัติที่ระบุคือตำแหน่งที่เกี่ยวข้องกับแกนหลัก

xaxis2=dict(
   domain = [0.1, 0.5],
   anchor = 'y2'
),
yaxis2 = dict(
   domain = [0.5, 0.9],
   anchor = 'x2'
)

สคริปต์ที่สมบูรณ์เพื่อแสดงการติดตามบันทึกในสิ่งที่ใส่เข้าไปและการติดตาม exp บนแกนหลักได้รับด้านล่าง -

trace1 = go.Scatter(
   x = x,
   y = y1,
   name = 'exp'
)
trace2 = go.Scatter(
   x = x,
   y = y2,
   xaxis = 'x2',
   yaxis = 'y2',
   name = 'log'
)
data = [trace1, trace2]
layout = go.Layout(
   yaxis = dict(showline = True),
   xaxis2 = dict(
      domain = [0.1, 0.5],
      anchor = 'y2'
   ),
   yaxis2 = dict(
      showline = True,
      domain = [0.5, 0.9],
      anchor = 'x2'
   )
)
fig = go.Figure(data=data, layout=layout)
iplot(fig)

ผลลัพธ์ดังต่อไปนี้ -