การวิเคราะห์เครือข่ายโซเชียลโดยใช้ Power BI และ R: A Custom Visuals Guide

เผยแพร่แล้ว: 2022-07-22

การวิเคราะห์เครือข่ายโซเชียลกลายเป็นเครื่องมือสำคัญในการตอบสนองความต้องการทางวิชาชีพที่หลากหลายอย่างรวดเร็ว สามารถแจ้งเป้าหมายขององค์กร เช่น การตลาดแบบกำหนดเป้าหมาย และระบุความปลอดภัยหรือความเสี่ยงด้านชื่อเสียง การวิเคราะห์เครือข่ายโซเชียลยังสามารถช่วยให้ธุรกิจบรรลุเป้าหมายภายในได้: ให้ข้อมูลเชิงลึกเกี่ยวกับพฤติกรรมของพนักงานและความสัมพันธ์ระหว่างส่วนต่างๆ ของบริษัท

องค์กรสามารถใช้โซลูชันซอฟต์แวร์จำนวนมากสำหรับการวิเคราะห์เครือข่ายสังคม แต่ละคนมีข้อดีและข้อเสียและเหมาะสมกับวัตถุประสงค์ที่แตกต่างกัน บทความนี้เน้นที่ Power BI ของ Microsoft ซึ่งเป็นหนึ่งในเครื่องมือสร้างภาพข้อมูลที่ใช้บ่อยที่สุดในปัจจุบัน ในขณะที่ Power BI นำเสนอส่วนเสริมเครือข่ายโซเชียลมากมาย เราจะสำรวจภาพที่กำหนดเองใน R เพื่อสร้างผลลัพธ์ที่น่าสนใจและยืดหยุ่นยิ่งขึ้น

บทช่วยสอนนี้ใช้ความเข้าใจในทฤษฎีกราฟพื้นฐาน โดยเฉพาะกราฟที่กำกับ นอกจากนี้ ขั้นตอนต่อมาเหมาะที่สุดสำหรับ Power BI Desktop ซึ่งพร้อมใช้งานบน Windows เท่านั้น ผู้อ่านอาจใช้เบราว์เซอร์ Power BI บน Mac OS หรือ Linux แต่เบราว์เซอร์ Power BI ไม่สนับสนุนคุณลักษณะบางอย่าง เช่น การนำเข้าเวิร์กบุ๊ก Excel

การจัดโครงสร้างข้อมูลสำหรับการแสดงภาพ

การสร้างเครือข่ายสังคมเริ่มต้นด้วยการรวบรวมข้อมูลการเชื่อมต่อ (ขอบ) ข้อมูลการเชื่อมต่อประกอบด้วยสองฟิลด์หลัก: โหนดต้นทางและโหนด เป้าหมาย — โหนดที่ปลายด้านใดด้านหนึ่งของขอบ นอกเหนือจากโหนดเหล่านี้ เราสามารถรวบรวมข้อมูลเพื่อสร้างข้อมูลเชิงลึกด้านภาพที่ครอบคลุมมากขึ้น ซึ่งโดยทั่วไปจะแสดงเป็นคุณสมบัติของโหนดหรือขอบ:

1) คุณสมบัติโหนด

  • รูปร่าง หรือ สี : ระบุประเภทผู้ใช้ เช่น ตำแหน่ง/ประเทศของผู้ใช้
  • ขนาด : บ่งบอกถึงความสำคัญในเครือข่าย เช่น จำนวนผู้ติดตามของผู้ใช้
  • รูปภาพ : ทำงานเป็นตัวระบุส่วนบุคคล เช่น avatar . ของผู้ใช้

2) คุณสมบัติของขอบ

  • การเชื่อมต่อ สี จังหวะ หรือ หัวลูกศร : ระบุประเภทของการเชื่อมต่อ เช่น ความรู้สึกของโพสต์หรือทวีตที่เชื่อมโยงผู้ใช้สองคน
  • ความกว้าง : แสดงถึงความแข็งแกร่งของการเชื่อมต่อ เช่น จำนวนการกล่าวถึงหรือรีทวีตระหว่างผู้ใช้สองคนในช่วงเวลาที่กำหนด

มาดูตัวอย่างภาพเครือข่ายโซเชียลเพื่อดูว่าคุณสมบัติเหล่านี้ทำงานอย่างไร:

กราฟของวงกลมที่เชื่อมต่อกันด้วยเส้นที่มีความกว้างต่างกันจะปรากฏขึ้นโดยมีสามส่วนที่แตกต่างกัน ด้านซ้ายของกราฟมีรูปร่างสีเขียว 6 แบบในขนาดต่างๆ โดยมีป้ายกำกับว่า 1, 2, 3, 4, 5 และ 6 ในรูปหกเหลี่ยม ตัวเลข 1-5 เป็นวงกลม ขณะที่ 6 เป็นเพชร พวกเขาเชื่อมต่อกันด้วยลูกศรสีเขียวที่มีความกว้างและทิศทางต่างกัน และหัวลูกศรบางหัวจะเป็นสีเขียวในขณะที่ส่วนอื่นๆ จะไม่ถูกเติม ทางด้านขวาของรูปร่างสีเขียวคือส่วนถัดไป: รูปทรงสีน้ำเงินเข้มสามรูปที่จัดเรียงเป็นรูปสามเหลี่ยมที่มีป้ายกำกับว่า 7, 8 และ 9 และเชื่อมต่อกันด้วยลูกศรสีน้ำเงินที่มีความกว้างและทิศทางต่างกัน (มีหัวลูกศรเติมสีน้ำเงินบางส่วน) โหนด 7 และ 9 เชื่อมต่อกับโหนด 3 และ 4 โดยมีลูกศรสีเทาที่มีความกว้างและทิศทางต่างกัน (โดยมีหัวลูกศรบางส่วนเป็นสีเทา) ตรงกลางกราฟ ใต้กลุ่มรูปร่างสองกลุ่มแรก เป็นเพชรสีน้ำเงินเม็ดเดียวที่มีป้ายกำกับ 10 ซึ่งเชื่อมต่อกับโหนด 5, 4 และ 9 ด้วยลูกศรสีเทาประที่มีความกว้างและทิศทางต่างกัน (มีหัวลูกศรบางส่วนเป็นสีเทา) .
โหนดสีเขียว น้ำเงินอ่อน และน้ำเงินเข้ม และรูปร่างวงกลมหรือเพชรที่แตกต่างกันแสดงให้เห็นโหนดประเภทต่างๆ ตัวเลขที่มีพื้นหลังโปร่งใสทำหน้าที่เป็นตัวระบุอิมเมจของโหนด และโหนดที่ใหญ่กว่า (เช่น โหนด 4) มีความสำคัญมากกว่าในเครือข่าย ประเภทของขอบที่แตกต่างกันจะถูกระบุด้วยสี (เขียว น้ำเงิน หรือเทา) สโตรก (ทึบหรือมีจุด) และหัวลูกศร (ว่างหรือเติม) ความกว้างของขอบแสดงถึงความแข็งแรง (เช่น การเชื่อมต่อจากโหนด 8 ถึงโหนด 9 มีความแข็งแรง)

นอกจากนี้เรายังสามารถใช้ข้อความโฮเวอร์เพื่อเสริมหรือแทนที่พารามิเตอร์ข้างต้น เนื่องจากสามารถรองรับข้อมูลอื่นๆ ที่ไม่สามารถแสดงได้อย่างง่ายดายผ่านคุณสมบัติของโหนดหรือขอบ

การเปรียบเทียบส่วนขยายเครือข่ายโซเชียลของ Power BI

หลังจากกำหนดคุณลักษณะข้อมูลต่างๆ ของเครือข่ายสังคมแล้ว มาตรวจสอบข้อดีและข้อเสียของเครื่องมือยอดนิยมสี่เครื่องมือที่ใช้แสดงภาพเครือข่ายใน Power BI

การขยาย กราฟเครือข่ายสังคมโดย Arthur Graus ตัวนำทางเครือข่าย เครือข่ายขั้นสูงโดย ZoomCharts (Light Edition) การแสดงภาพแบบกำหนดเองโดยใช้ R
ขนาดโหนดไดนามิก ใช่ ใช่ ใช่ ใช่
ขนาดขอบไดนามิก ไม่ ใช่ ไม่ ใช่
การปรับแต่งสีของโหนด ใช่ ใช่ ไม่ ใช่
การประมวลผลเครือข่ายโซเชียลที่ซับซ้อน ไม่ ใช่ ใช่ ใช่
รูปโปรไฟล์สำหรับโหนด ใช่ ไม่ ไม่ ใช่
ปรับซูมได้ ไม่ ใช่ ใช่ ใช่
การกรองการเชื่อมต่อ N ยอดนิยม ไม่ ไม่ ไม่ ใช่
ข้อมูลที่กำหนดเองบนโฮเวอร์ ไม่ ไม่ ไม่ ใช่
การปรับแต่งสีขอบ ไม่ ไม่ ไม่ ใช่
คุณสมบัติขั้นสูงอื่น ๆ ไม่ ไม่ ไม่ ใช่


กราฟเครือข่ายสังคมโดย Arthur Graus, Network Navigator และ Advanced Networks โดย ZoomCharts (Light Edition) เป็นส่วนขยายที่เหมาะสมทั้งหมดในการพัฒนาเครือข่ายสังคมออนไลน์แบบง่ายๆ และเริ่มต้นการวิเคราะห์เครือข่ายสังคมครั้งแรกของคุณ

วงกลมสีน้ำเงินเข้ม สีฟ้าอ่อน และสีส้มจำนวนมาก (50+ วงกลม) เชื่อมต่อกันด้วยเส้นสีเทาบางๆ บนพื้นหลังสีขาว วงกลมมีเส้นขอบสีทึบและเต็มไปด้วยรูปภาพขนาดเล็กของโปเกมอนต่างๆ ที่มีพื้นหลังสีขาว และวงกลมจะปิดกั้นมุมมองของเส้นสีเทาส่วนใหญ่ พวกเขาสร้างรูปทรงกลมโดยรวม
ตัวอย่างการแสดงภาพโดยใช้ Social Network Graph โดยส่วนขยายของ Arthur Graus

วงกลมสีน้ำเงิน สีม่วง และสีเทาจำนวนมาก (50+ วงกลม) เชื่อมต่อกันด้วยเส้นสีเทาบางๆ บนพื้นหลังสีขาว วงกลมจะทึบและเต็มไปหมด และบังการมองเห็นของเส้นสีเทาบางเส้น พวกเขาสร้างการจัดเรียงแบบวงกลมโดยรวม
ตัวอย่างการแสดงภาพโดยใช้ส่วนขยาย Network Navigator

วงกลมสีน้ำเงินอมเขียวขนาดใหญ่และวงกลมสีส้มขนาดเล็กจำนวนมาก (50+ วงกลม) เชื่อมต่อกันด้วยเส้นสีเทาบางๆ บนพื้นหลังสีขาว วงกลมจะทึบและเต็มไปหมด และมองเห็นเส้นสีเทาส่วนใหญ่ได้ พวกมันสร้างรูปร่างลิ่มในแนวนอนโดยรวม โดยมีวงกลมที่มีประชากรหนาแน่นกว่าปรากฏขึ้นทางด้านขวา ที่ด้านล่างซ้ายของแผนภูมิ มีไอคอนวิดเจ็ตสองสามไอคอนและวงกลมสองวงที่มีป้ายกำกับ: วงกลมสีน้ำเงินอมเขียวที่ระบุว่า "จากผู้ใช้" และวงกลมสีส้มที่มีป้ายกำกับ "ถึงผู้ใช้" ที่ด้านล่างขวาของแผนภูมิคือโลโก้ที่เขียนว่า "zoomcharts"
ตัวอย่างการแสดงภาพโดยใช้ส่วนขยาย Advanced Networks โดย ZoomCharts (Light Edition)

อย่างไรก็ตาม หากคุณต้องการทำให้ข้อมูลของคุณมีชีวิตชีวาและเปิดเผยข้อมูลเชิงลึกที่แปลกใหม่ด้วยภาพที่ดึงดูดความสนใจ หรือหากเครือข่ายโซเชียลของคุณซับซ้อนเป็นพิเศษ ฉันแนะนำให้พัฒนาภาพที่กำหนดเองใน R

วงกลมสีเขียว สีฟ้า และสีม่วงจำนวนมาก (50+ วงกลม) เชื่อมต่อกันด้วยเส้นบางๆ ที่มีสีต่างกัน (สีเขียว สีเทา และสีแดง) บนพื้นหลังสีขาว วงกลมนั้นแน่นและเต็มไปด้วยภาพโปเกมอนที่กึ่งกลาง และมองเห็นเส้นบาง ๆ ส่วนใหญ่ได้ พวกมันสร้างรูปทรงกลมที่แผ่ออกไปโดยรวม โดยวงกลมสีเขียวมักจะแตกแขนงออกเป็นวงกลมสีน้ำเงินหรือสีม่วงที่เล็กกว่า มุมบนขวาของแผนภูมิมีข้อความ "Social Network" และด้านล่างของแผนภูมิคือคำอธิบายของเส้นและวงกลมที่มีข้อความที่เกี่ยวข้อง: เส้นสีเขียวที่มีข้อความ "Positive" เส้นสีเทาที่มีข้อความ "Neutral" เส้นสีแดงที่มีข้อความ "เชิงลบ" วงกลมสีน้ำเงินที่มีข้อความ "พูดถึง" และวงกลมสีม่วงที่มีข้อความ "รีทวีต"
ตัวอย่างการแสดงภาพที่สร้างขึ้นโดยใช้ภาพที่กำหนดเองใน R

การแสดงภาพแบบกำหนดเองนี้เป็นผลลัพธ์สุดท้ายของส่วนขยายเครือข่ายโซเชียลของบทช่วยสอนของเราใน R และแสดงให้เห็นถึงคุณสมบัติที่หลากหลายและคุณสมบัติของโหนด/ขอบที่เสนอโดย R

การสร้างส่วนขยายเครือข่ายโซเชียลสำหรับ Power BI โดยใช้ R

การสร้างส่วนขยายเพื่อแสดงภาพเครือข่ายสังคมใน Power BI โดยใช้ R ประกอบด้วยห้าขั้นตอนที่แตกต่างกัน แต่ก่อนที่เราจะสามารถสร้างส่วนขยายเครือข่ายสังคมของเราได้ เราต้องโหลดข้อมูลของเราลงใน Power BI

วิชาบังคับก่อน: รวบรวมและเตรียมข้อมูลสำหรับ Power BI

คุณสามารถทำตามบทช่วยสอนนี้ด้วยชุดข้อมูลทดสอบตามข้อมูล Twitter และ Facebook หรือดำเนินการกับเครือข่ายโซเชียลของคุณเอง ข้อมูลของเราได้รับการสุ่ม คุณสามารถดาวน์โหลดข้อมูล Twitter จริงได้หากต้องการ หลังจากที่คุณรวบรวมข้อมูลที่จำเป็นแล้ว ให้เพิ่มลงใน Power BI (เช่น โดยการนำเข้าเวิร์กบุ๊ก Excel หรือเพิ่มข้อมูลด้วยตนเอง) ผลลัพธ์ของคุณควรคล้ายกับตารางต่อไปนี้:

ตารางที่มีแถวสีเทาและสีขาวสลับกันสิบสามแถวปรากฏขึ้น มันมีชื่อ---"โซเชียลเน็ตเวิร์ก"---โดยมีส่วนหัวอยู่ด้านล่าง คอลัมน์แรกมีชื่อว่า "จากผู้ใช้" และมีข้อความ "1" แปดข้อความ ตามด้วยข้อความ "2" ห้าข้อความ คอลัมน์ที่สองมีป้ายกำกับว่า "ถึงผู้ใช้" และอ่าน (จากบนลงล่าง): 2, 3, 5, 6, 7, 8, 9, 10, 7, 8, 11, 13, 14 คอลัมน์ที่สามมีชื่อว่า " จำนวนการเชื่อมต่อ" และการอ่าน (จากบนลงล่าง): 12, 46, 29, 79, 49, 11, 90, 100, 66, 29, 62, 13, 45 คอลัมน์ที่สี่มีชื่อว่า "ประเภท" และอ่าน ( จากบนลงล่าง): รีทวีต พูดถึง พูดถึง รีทวีต รีทวีต รีทวีต พูดถึง พูดถึง รีทวีต รีทวีต รีทวีต รีทวีต พูดถึง คอลัมน์ที่ห้ามีชื่อว่า "ความรู้สึก" และอ่าน (จากบนลงล่าง): บวก, บวก, เชิงลบ, เป็นกลาง, บวก, เชิงลบ, บวก, เป็นกลาง, เป็นกลาง, เชิงลบ, เชิงลบ, เชิงลบ, เชิงลบ คอลัมน์ที่หกมีชื่อว่า "จากชื่อผู้ใช้" และมีข้อความ "Aaliyah" แปดข้อความตามด้วยข้อความ "Aaron" ห้าข้อความ คอลัมน์ที่เจ็ดอ่านว่า "ถึงชื่อผู้ใช้" และอ่าน (จากบนลงล่าง): Aaron, Abel, Abraham, Ace, Adalyn, Adalynn ที่มี Ns สองตัว, Adam, Addison, Adalyn, Adalynn ที่มี Ns สองตัว, Adeline, Adriel, Aidan คอลัมน์ที่แปดอ่านว่า "จากอวาตาร์" และมีข้อความ "https://raychemmedica.com/SampleImages/Pokemon/1.png" แปดข้อความ ตามด้วยข้อความ "https://raychemmedica.com/SampleImages/Pokemon/2.png" ห้าข้อความ . คอลัมน์ที่เก้าอ่านว่า "ถึงอวาตาร์" และแต่ละรายการมีข้อความ "https://raychemmedica.com/SampleImages/Pok" และดูเหมือนจะถูกตัดออก

เมื่อคุณตั้งค่าข้อมูลแล้ว คุณก็พร้อมที่จะสร้างการแสดงภาพแบบกำหนดเอง

ขั้นตอนที่ 1: ตั้งค่าเทมเพลตการแสดงข้อมูล

การพัฒนาการแสดงภาพ Power BI ไม่ใช่เรื่องง่าย—แม้แต่ภาพพื้นฐานก็ต้องการไฟล์นับพันไฟล์ โชคดีที่ Microsoft มีไลบรารี่ที่เรียกว่า pbiviz ซึ่งจัดเตรียมไฟล์ที่รองรับโครงสร้างพื้นฐานที่จำเป็นด้วยโค้ดเพียงไม่กี่บรรทัด ไลบรารี pbiviz จะบรรจุไฟล์สุดท้ายทั้งหมดของเราใหม่เป็นไฟล์ .pbiviz ซึ่งเราสามารถโหลดลงใน Power BI ได้โดยตรงในรูปแบบการแสดงภาพ

วิธีที่ง่ายที่สุดในการติดตั้ง pbiviz คือ Node.js เมื่อติดตั้ง pbiviz แล้ว เราจำเป็นต้องเริ่มต้นวิชวล R แบบกำหนดเองของเราผ่านอินเทอร์เฟซบรรทัดคำสั่งของเครื่อง:

 pbiviz new toptalSocialNetworkByBharatGarg -t rhtml cd toptalSocialNetworkByBharatGarg npm install pbiviz package

อย่าลืมแทนที่ toptalSocialNetworkByBharatGarg ด้วยชื่อที่ต้องการสำหรับการสร้างภาพข้อมูลของคุณ -t rhtml แจ้งแพ็คเกจ pbiviz ว่าควรสร้างเทมเพลตเพื่อพัฒนาการแสดงข้อมูล HTML แบบ R-based คุณจะเห็นข้อผิดพลาดเนื่องจากเรายังไม่ได้ระบุฟิลด์ต่างๆ เช่น ชื่อผู้เขียนและอีเมลในแพ็คเกจของเรา แต่เราจะแก้ไขปัญหาเหล่านี้ในภายหลังในบทช่วยสอน หากสคริปต์ pbiviz ไม่ทำงานเลยใน PowerShell คุณอาจต้องอนุญาตสคริปต์ด้วย Set-ExecutionPolicy RemoteSigned ก่อน

เมื่อรันโค้ดสำเร็จ คุณจะเห็นโฟลเดอร์ที่มีโครงสร้างดังต่อไปนี้:

รายการ File Explorer ที่มีแปดโฟลเดอร์ย่อย (.tmp, .vscode, สินทรัพย์, dist, node_modules, r_files, src และสไตล์) และแปดไฟล์ (capabilities.json, dependencies.json, package.json, package-lock.json, pbiviz .json, script.r, tsconfig.json และ tslint.json) ไฟล์ทั้งหมดมีขนาด 1 KB ยกเว้น functions.json (2 KB) และ package-lock.json (23 KB)

เมื่อเรามีโครงสร้างโฟลเดอร์พร้อมแล้ว เราก็สามารถเขียนโค้ด R สำหรับการสร้างภาพข้อมูลที่กำหนดเองได้

ขั้นตอนที่ 2: เขียนโค้ดการแสดงภาพใน R

ไดเร็กทอรีที่สร้างในขั้นตอนแรกมีไฟล์ชื่อ script.r ซึ่งประกอบด้วยโค้ดดีฟอลต์ (โค้ดเริ่มต้นสร้างส่วนขยาย Power BI อย่างง่าย ซึ่งใช้ฐานข้อมูลตัวอย่าง iris ที่มีอยู่ใน R เพื่อพล็อตฮิสโตแกรมของ Petal.Length โดย Petal.Species ) เราจะอัปเดตโค้ดแต่คงโครงสร้างเริ่มต้นไว้

โครงการของเราใช้ไลบรารี R สามแห่ง:

  • DiagrammeR: สร้างกราฟจากข้อความ
  • visNetwork: ให้การแสดงภาพเครือข่ายแบบโต้ตอบ
  • data.table: ช่วยในการจัดระเบียบข้อมูล คล้ายกับ data.frame

มาแทนที่โค้ดในส่วนการ Library Declarations ของ script.r เพื่อให้สอดคล้องกับการใช้งานไลบรารีของเรา:

 libraryRequireInstall("DiagrammeR") libraryRequireInstall("visNetwork") libraryRequireInstall("data.table")

ต่อไป เราจะแทนที่รหัสในส่วน Actual code ด้วยรหัส R ของเรา ก่อนสร้างการแสดงภาพ เราต้องอ่านและประมวลผลข้อมูลของเราก่อน เราจะรับสองอินพุตจาก Power BI:

  • num_records : อินพุตตัวเลข N เพื่อให้เราเลือกเฉพาะการเชื่อมต่อ N อันดับแรกจากเครือข่ายของเรา (เพื่อจำกัดจำนวนการเชื่อมต่อที่แสดง)
  • dataset : โหนดและขอบเครือข่ายโซเชียลของเรา

ในการคำนวณการเชื่อมต่อ N ที่เราจะพล็อต เราจำเป็นต้องรวมค่า num_records เนื่องจาก Power BI จะให้เวกเตอร์ตามค่าเริ่มต้นแทนที่จะเป็นค่าตัวเลขเดียว ฟังก์ชันการรวมเช่น max บรรลุเป้าหมายนี้:

 limit_connection <- max(num_records)

ตอนนี้เราจะอ่าน dataset เป็นวัตถุ data.table พร้อมคอลัมน์ที่กำหนดเอง เราจัดเรียงชุดข้อมูลตามค่าตามลำดับที่ลดลงเพื่อวางการเชื่อมต่อที่บ่อยที่สุดไว้ที่ด้านบนสุดของตาราง เพื่อให้แน่ใจว่าเราเลือกระเบียนที่สำคัญที่สุดที่จะลงจุดเมื่อเราจำกัดการเชื่อมต่อกับ num_records :

 dataset <- data.table(from = dataset[[1]] ,to = dataset[[2]] ,value = dataset[[3]] ,col_sentiment = dataset[[4]] ,col_type = dataset[[5]] ,from_name = dataset[[6]] ,to_name = dataset[[7]] ,from_avatar = dataset[[8]] ,to_avatar = dataset[[9]])[ order(-value)][ seq(1, min(nrow(dataset), limit_connection))]

ต่อไป เราต้องเตรียมข้อมูลผู้ใช้ของเราโดยการสร้างและจัดสรร ID ผู้ใช้ที่ไม่ซ้ำกัน ( uid ) ให้กับผู้ใช้แต่ละราย โดยจัดเก็บไว้ในตารางใหม่ เรายังคำนวณจำนวนผู้ใช้ทั้งหมดและเก็บข้อมูลนั้นไว้ในตัวแปรแยกต่างหากที่เรียกว่า num_nodes :

 user_ids <- data.table(id = unique(c(dataset$from, dataset$to)))[, uid := 1:.N] num_nodes <- nrow(user_ids)

มาอัปเดตข้อมูลผู้ใช้ของเราด้วยคุณสมบัติเพิ่มเติม ได้แก่ :

  • จำนวนผู้ติดตาม (ขนาดของโหนด)
  • จำนวนเร็กคอร์ด
  • ประเภทผู้ใช้ (รหัสสี)
  • ลิงค์อวาตาร์

เราจะใช้ฟังก์ชัน merge ของ R เพื่ออัปเดตตาราง:

 user_ids <- merge(user_ids, dataset[, .(num_follower = uniqueN(to)), from], by.x = 'id', by.y = 'from', all.x = T)[is.na(num_follower), num_follower := 0][, size := num_follower][num_follower > 0, size := size + 50][, size := size + 10] user_ids <- merge(user_ids, dataset[, .(sum_val = sum(value)), .(to, col_type)][order(-sum_val)][, id := 1:.N, to][id == 1, .(to, col_type)], by.x = 'id', by.y = 'to', all.x = T) user_ids[id %in% dataset$from, col_type := '#42f548'] user_ids <- merge(user_ids, unique(rbind(dataset[, .('id' = from, 'Name' = from_name, 'avatar' = from_avatar)], dataset[, .('id' = to, 'Name' = to_name, 'avatar' = to_avatar)])), by = 'id')

นอกจากนี้เรายังเพิ่ม uid ที่เราสร้างขึ้นไปยังชุดข้อมูลดั้งเดิมเพื่อให้เราสามารถดึงรหัส from และ to ID ผู้ใช้ในภายหลังในโค้ด:

 dataset <- merge(dataset, user_ids[, .(id, uid)], by.x = "from", by.y = "id") dataset <- merge(dataset, user_ids[, .(id, uid_retweet = uid)], by.x = "to", by.y = "id") user_ids <- user_ids[order(uid)]

ต่อไป เราสร้างเฟรมข้อมูลโหนดและขอบสำหรับการแสดงภาพ เราเลือก style และ shape ของโหนดของเรา (วงกลมที่เติม) และเลือกคอลัมน์ที่ถูกต้องของตาราง user_ids ของเราเพื่อเติมแอตทริบิวต์ color , data , value และ image ของโหนด:

 nodes <- create_node_df(n = num_nodes, type = "lower",, color = user_ids$col_type, shape = 'circularImage', data = user_ids$uid, value = user_ids$size, image = user_ids$avatar, title = paste0("<p>Name: <b>", user_ids$Name,"</b><br>", "Super UID <b>", user_ids$id, "</b><br>", "# followers <b>", user_ids$num_follower, "</b><br>", "</p>") )

ในทำนองเดียวกัน เราเลือกคอลัมน์ตาราง dataset ที่สอดคล้องกับแอตทริบิวต์ขอบของเรา from , to และ color :

 edges <- create_edge_df(from = dataset$uid, to = dataset$uid_retweet, arrows = "to", color = dataset$col_sentiment)

ในที่สุด เมื่อโหนดและเฟรมข้อมูลขอบพร้อมแล้ว เรามาสร้างภาพข้อมูลของเราโดยใช้ไลบรารี visNetwork และจัดเก็บไว้ในตัวแปรที่โค้ดเริ่มต้นจะใช้ในภายหลัง เรียกว่า p :

 p <- visNetwork(nodes, edges) %>% visOptions(highlightNearest = list(enabled = TRUE, degree = 1, hover = T)) %>% visPhysics(stabilization = list(enabled = FALSE, iterations = 10), adaptiveTimestep = TRUE, barnesHut = list(avoidOverlap = 0.2, damping = 0.15, gravitationalConstant = -5000))

ที่นี่ เราปรับแต่งการกำหนดค่าการแสดงภาพเครือข่ายบางส่วนใน visOptions และ visPhysics อย่าลังเลที่จะดูหน้าเอกสารและอัปเดตตัวเลือกเหล่านี้ตามต้องการ ส่วน Actual code ของเราเสร็จสมบูรณ์แล้ว และเราควรอัปเดตส่วน Create and save widget โดยลบบรรทัด p = ggplotly(g); เนื่องจากเราเข้ารหัสตัวแปรการสร้างภาพของเราเอง p

ขั้นตอนที่ 3: เตรียมการแสดงภาพสำหรับ Power BI

ตอนนี้เราเขียนโค้ดใน R เสร็จแล้ว เราต้องทำการเปลี่ยนแปลงบางอย่างในไฟล์ JSON ที่สนับสนุนของเรา เพื่อเตรียมการแสดงภาพสำหรับใช้ใน Power BI

มาเริ่มกันที่ไฟล์ capabilities.json .json ประกอบด้วยข้อมูลส่วนใหญ่ที่คุณเห็นในแท็บการ แสดง ข้อมูลสำหรับวิชวล เช่น แหล่งข้อมูลของส่วนขยายและการตั้งค่าอื่นๆ อันดับแรก เราต้องอัปเดต dataRoles และแทนที่ค่าที่มีอยู่ด้วยบทบาทข้อมูลใหม่สำหรับ dataset และอินพุต num_records ของเรา:

 # ... "dataRoles": [ { "displayName": "dataset", "description": "Connection Details - From, To, # of Connections, Sentiment Color, To Node Type Color", "kind": "GroupingOrMeasure", "name": "dataset" }, { "displayName": "num_records", "description": "number of records to keep", "kind": "Measure", "name": "num_records" } ], # ...

ในไฟล์ dataViewMappings capabilities.json เราจะเพิ่ม conditions ที่อินพุตของเราต้องปฏิบัติตาม รวมทั้งอัปเดต scriptResult เพื่อให้ตรงกับบทบาทข้อมูลใหม่ของเราและเงื่อนไข ดูส่วน conditions พร้อมกับส่วน select ภายใต้ scriptResult สำหรับการเปลี่ยนแปลง:

 # ... "dataViewMappings": [ { "conditions": [ { "dataset": { "max": 20 }, "num_records": { "max": 1 } } ], "scriptResult": { "dataInput": { "table": { "rows": { "select": [ { "for": { "in": "dataset" } }, { "for": { "in": "num_records" } } ], "dataReductionAlgorithm": { "top": {} } } } }, # ...

ไปที่ไฟล์ dependencies.json ของเรา ที่นี่ เราจะเพิ่มสามแพ็คเกจเพิ่มเติมภายใต้ cranPackages เพื่อให้ Power BI สามารถระบุและติดตั้งไลบรารีที่จำเป็นได้:

 { "name": "data.table", "displayName": "data.table", "url": "https://cran.r-project.org/web/packages/data.table/index.html" }, { "name": "DiagrammeR", "displayName": "DiagrammeR", "url": "https://cran.r-project.org/web/packages/DiagrammeR/index.html" }, { "name": "visNetwork", "displayName": "visNetwork", "url": "https://cran.r-project.org/web/packages/visNetwork/index.html" },

หมายเหตุ: Power BI ควรติดตั้งไลบรารีเหล่านี้โดยอัตโนมัติ แต่ถ้าคุณพบข้อผิดพลาดของไลบรารี ให้ลองเรียกใช้คำสั่งต่อไปนี้:

 install.packages(c("DiagrammeR", "htmlwidgets", "visNetwork", "data.table", "xml2"))

สุดท้าย มาเพิ่มข้อมูลที่เกี่ยวข้องสำหรับภาพของเราในไฟล์ pbiviz.json ฉันขอแนะนำให้อัปเดตฟิลด์ต่อไปนี้:

  • ช่องคำอธิบายภาพ
  • URL การสนับสนุนของวิชวล
  • GitHub URL ของวิชวล
  • ชื่อผู้เขียน
  • อีเมลของผู้เขียน

ตอนนี้ ไฟล์ของเราได้รับการอัปเดตแล้ว และเราต้องจัดแพ็คเกจการแสดงภาพใหม่จากบรรทัดคำสั่ง:

 pbiviz package

ในการรันโค้ดที่ประสบความสำเร็จ ไฟล์ .pbiviz ควรถูกสร้างขึ้นในไดเร็กทอรี dist โค้ดทั้งหมดที่กล่าวถึงในบทช่วยสอนนี้สามารถดูได้ที่ GitHub

ขั้นตอนที่ 4: นำเข้าการแสดงภาพไปยัง Power BI

ในการนำเข้าการแสดงภาพใหม่ของคุณใน Power BI ให้เปิดรายงาน Power BI ของคุณ (รายงานสำหรับข้อมูลที่มีอยู่หรือที่สร้างขึ้นระหว่างขั้นตอน ข้อกำหนดเบื้องต้น พร้อมข้อมูลการทดสอบ) และไปที่แท็บการ แสดง ข้อมูล คลิกปุ่ม ... [ตัวเลือกเพิ่มเติม] แล้วเลือก นำเข้าภาพจากไฟล์ หมายเหตุ: คุณอาจต้องเลือก แก้ไข ในเบราว์เซอร์ก่อนจึงจะมองเห็นแท็บการ แสดง ข้อมูลได้

บานหน้าต่างจะปรากฏขึ้นพร้อมชื่อเรื่อง "Visualizations" และลูกศร ">" สองอันทางด้านขวา ด้านล่าง ข้อความ "สร้างภาพ" ที่มีรูปภาพสองภาพด้านล่าง: สี่เหลี่ยมสีเหลืองสองรูปและเส้นทางด้านซ้าย และกระดาษและพู่กันทางด้านขวา เลือกรูปภาพสี่เหลี่ยมสีเหลืองสองรูป และด้านล่างมีแผงไอคอนกราฟต่างๆ มากกว่า 30 ไอคอน ไอคอนสุดท้ายคือจุดไข่ปลา ซึ่งมีข้อความโฮเวอร์ "รับภาพเพิ่มเติม" ใต้แผงไอคอน จะมีข้อความ "ค่า" พร้อมบรรทัดข้อความด้านล่างที่เขียนว่า "เพิ่มฟิลด์ข้อมูลที่นี่" ด้านล่างนั้น ข้อความ "เจาะลึก" ตามด้วย "รายงานข้าม" โดยเลือกปุ่มตัวเลือก "ปิด" ไว้ข้างๆ

นำทางไปยังไดเร็กทอรี dist ของโฟลเดอร์การแสดงภาพของคุณ และเลือกไฟล์ .pbiviz เพื่อโหลดภาพของคุณเข้าสู่ Power BI อย่างราบรื่น

ขั้นตอนที่ 5: สร้างการแสดงภาพใน Power BI

ขณะนี้การแสดงภาพที่คุณนำเข้ามีอยู่ในบานหน้าต่างการแสดงภาพ คลิกที่ไอคอนการแสดงภาพเพื่อเพิ่มลงในรายงานของคุณ แล้วเพิ่มคอลัมน์ที่เกี่ยวข้องลงใน dataset และอินพุต num_records :

บานหน้าต่างจะปรากฏขึ้นพร้อมกับไอคอนเครื่องมือที่เลือกซึ่งมีข้อความโฮเวอร์ "toptalSocialNetworkByBharatGarg" ใต้ไอคอน ข้อความ "ชุดข้อมูล" ปรากฏขึ้นพร้อมสี่เหลี่ยมแบบเลื่อนลงต่างๆ ด้านล่าง (จากบนลงล่าง): จากผู้ใช้ ถึงผู้ใช้ จำนวนการเชื่อมต่อ สี สี ชื่อผู้ใช้ ชื่อผู้ใช้ อวาตาร์ อวาตาร์

คุณสามารถเพิ่มข้อความ ตัวกรอง และคุณลักษณะเพิ่มเติมให้กับการแสดงภาพได้ ทั้งนี้ขึ้นอยู่กับข้อกำหนดของโครงการของคุณ ฉันยังแนะนำให้คุณอ่านเอกสารโดยละเอียดสำหรับไลบรารี R สามตัวที่เราเคยใช้เพื่อปรับปรุงการแสดงภาพของคุณให้ดียิ่งขึ้น เนื่องจากโปรเจ็กต์ตัวอย่างของเราไม่สามารถครอบคลุมกรณีการใช้งานทั้งหมดของฟังก์ชันที่มีได้

อัปเกรดการวิเคราะห์เครือข่ายโซเชียลครั้งต่อไปของคุณ

ผลลัพธ์สุดท้ายของเราคือข้อพิสูจน์ถึงพลังและประสิทธิภาพของ R เมื่อพูดถึงการสร้างการแสดงภาพ Power BI แบบกำหนดเอง ลองใช้การวิเคราะห์เครือข่ายสังคมโดยใช้ภาพที่กำหนดเองใน R ในชุดข้อมูลถัดไป และทำการตัดสินใจที่ชาญฉลาดยิ่งขึ้นด้วยข้อมูลเชิงลึกที่ครอบคลุม

บล็อก Toptal Engineering ขอขอบคุณ Leandro Roser สำหรับการตรวจสอบตัวอย่างโค้ดที่นำเสนอในบทความนี้

จากบนลงล่าง คำว่า "Gold" (สีทอง), "Microsoft" และ "Partner" (สีดำทั้งคู่) จะปรากฏขึ้นตามด้วยโลโก้ Microsoft
ในฐานะ Microsoft Gold Partner Toptal เป็นเครือข่ายผู้เชี่ยวชาญของ Microsoft ที่ยอดเยี่ยม สร้างทีมที่มีประสิทธิภาพสูงด้วยผู้เชี่ยวชาญที่คุณต้องการ ทุกที่และทุกเวลาที่คุณต้องการ!