matplotlibห้องสมุดที่มีความสามารถมาก แต่ขาด interactiveness โดยเฉพาะอย่างยิ่งภายใน Jupyter โน๊ตบุ๊ค ฉันต้องการที่ดีออฟไลน์เครื่องมือวางแผนเหมือนplot.ly
matplotlibห้องสมุดที่มีความสามารถมาก แต่ขาด interactiveness โดยเฉพาะอย่างยิ่งภายใน Jupyter โน๊ตบุ๊ค ฉันต้องการที่ดีออฟไลน์เครื่องมือวางแผนเหมือนplot.ly
คำตอบ:
มีห้องสมุดที่ยอดเยี่ยมที่เรียกว่าMPLD3ที่สร้างแปลง D3 แบบโต้ตอบ
รหัสนี้สร้างพล็อตเชิงโต้ตอบ HTML ของชุดข้อมูลไอริสยอดนิยมที่เข้ากันได้กับ Jupyter Notebook เมื่อเลือกแปรงทาสีมันจะช่วยให้คุณสามารถเลือกชุดย่อยของข้อมูลที่จะเน้นในแปลงทั้งหมด เมื่อเลือกลูกศรไขว้จะช่วยให้คุณสามารถวางเมาส์เหนือจุดข้อมูลและดูข้อมูลเกี่ยวกับข้อมูลต้นฉบับ ฟังก์ชั่นนี้มีประโยชน์มากเมื่อทำการวิเคราะห์ข้อมูลเชิงสำรวจ
นำเข้า matplotlib.pyplot เป็น plt นำเข้าจำนวนมากเป็น np นำเข้านุ่นเป็น pd นำเข้าทะเลจาก sb นำเข้า mpld3 จากปลั๊กอินนำเข้า mpld3 % matplotlib แบบอินไลน์ iris = sb.load_dataset ('iris') จาก sklearn.preprocessing นำเข้า StandardScaler X = pd.get_dummies (ไอริส) X_scal = StandardScaler (). fit_transform (X) สลัว = 3 จาก sklearn.decomposition นำเข้า PCA pca = PCA (n_components = dim) Y_sklearn = pca.fit_transform (X_scal) # กำหนด CSS บางอย่างเพื่อควบคุมป้ายกำกับที่กำหนดเองของเรา css = "" " โต๊ะ { การยุบชายแดน: การล่มสลาย; } TH { สี: #ffffff; สีพื้นหลัง: # 000000; } td { สีพื้นหลัง: #cccccc; } ตาราง, th, td { ครอบครัวแบบอักษร: Arial, Helvetica, sans-serif; เส้นขอบ: สีดำทึบ 1px; จัดเรียงข้อความ: ขวา; } """ มะเดื่อ, ขวาน = plt.subplots (สลัวสลัวมะเดื่อ = (6,6)) fig.subplots_adjust (hspace = .4, wspace = .4) tooltip = [None] * dim N = 200 ดัชนี = np.random.choice (ช่วง (Y_sklearn.shape [0]), ขนาด = N) สำหรับ m อยู่ในช่วง (สลัว): สำหรับ n อยู่ในช่วง (m + 1): ax [m, n] .grid (จริง, alpha = 0.3) scatter = ax [m, n]. scatter (Y_sklearn [index, m], Y_sklearn [index, n], alpha = .05) ป้ายกำกับ = [] สำหรับฉันในดัชนี: label = X.ix [[i],:]. T.astype (int) label.columns = ['Row {0}'. format (X.index [i])] labels.append (STR (label.to_html ())) ax [m, n] .set_xlabel ('Component' + str (m)) ax [m, n] .set_ylabel ('Component' + str (n)) #ax [m, n] .set_title ('คำแนะนำเครื่องมือ HTML', ขนาด = 20) tooltip [m] = plugins.PointHTMLTooltip (กระจาย, ป้ายกำกับ, voffset = 20, hoffset = 20, css = css) ปลั๊กอินเชื่อมต่อ (รูปที่คำแนะนำเครื่องมือ [m]) plugins.connect (รูปที่, plugins.LinkedBrush (กระจาย)) test = mpld3.fig_to_html (fig = fig) ด้วย open ("Output.html", "w") เป็น text_file: text_file.write (ทดสอบ)
เห็นมันในการดำเนินการในบล็อกของฉัน
อัปเดต [9 กรกฎาคม 2559]: ฉันเพิ่งพบว่า Plot.ly มีโหมดออฟไลน์และตอนนี้เป็นโอเพ่นซอร์ส มันมีระฆังและนกหวีดจำนวนมากบรรจุไว้ล่วงหน้า แต่ MPLD3 อาจยังคงเหมาะสมในบางกรณี
ฉันต้องการที่จะแสดงความคิดเห็นแทนคำตอบเนื่องจากฉันไม่ได้ตั้งใจที่จะเสียบ / โฆษณา แต่ตอนนี้ฉันกำลังทำวิทยานิพนธ์ของฉันซึ่งอาจเป็นที่สนใจของคุณตามที่คุณต้องการ ในความเป็นจริงมันเป็นเครื่องมือสร้างภาพข้อมูลการจัดกลุ่ม แต่ถ้าคุณใช้ k-mean ด้วย k = 1 คุณมีพล็อตเชิงโต้ตอบที่คุณสามารถค้นหาคำเลือกพื้นที่และดูเนื้อหาของแต่ละโหนดและสิ่งอื่น ๆ ลองดูและดูว่าเหมาะกับคุณหรือไม่!
ทางเลือกที่ดีมากพล็อตคือ ...
ในกรณีของฉันฉันพยายามพล็อตเรื่องที่คล้ายกันโดยใช้ทักษะซึ่งทักษะคือ word2vec ที่มีการฝัง 300 มิติ นำมาสู่พื้นที่เวกเตอร์ 3 มิติและใช้ Scatter3D อย่างมีแผนฉันก็สามารถพล็อต 3D scatterplot เหมือนกันได้
Et Viola !! มีกราฟ 3 มิติที่ยอดเยี่ยมพร้อมฟังก์ชันการวางเมาส์และขยาย และส่วนที่ดีที่สุดคือมันสามารถส่งออกเป็นไฟล์ html ทำให้เป็นแบบพลักแอนด์เพลย์ที่เหมาะสำหรับพีซีอื่น ๆ เพียงลากและวางในเบราว์เซอร์ (รวมอยู่ในรหัสด้านล่าง)
BEE จะง่ายกว่านี้อีกแล้ว
from plotly.offline import plot
from plotly.graph_objs import *
import numpy as np
# x = np.random.randn(2000)
# y = np.random.randn(2000)
# Instead of simply calling plot(...), store your plot as a variable and pass it to displayHTML().
# Make sure to specify output_type='div' as a keyword argument.
# (Note that if you call displayHTML() multiple times in the same cell, only the last will take effect.)
p = plot(
[
Scatter3d(x=skills_df[0], y=skills_df[1], z=skills_df[2], text= skills_df['designation'], mode='markers', marker=Marker(color=skills_df['cluster_number'], size=3, opacity=0.5, colorscale='Viridis'))
],
output_type='div'
# filename='/dbfs/FileStore/tables/lnkdn_jobroles_viridis.html' turn it on to save the file
)
ipywidgets
(ตัวอย่างที่github.com/ipython/ipywidgets/blob/master/docs/source/examples / … ) หรือbokeh
( bokeh.pydata.org/en/latest )