คำถามติดแท็ก matplotlib

Matplotlib เป็นไลบรารีการพล็อตสำหรับ Python ซึ่งอาจใช้แบบโต้ตอบหรือฝังใน GUI แบบสแตนด์อะโลน อินเทอร์เฟซ "pyplot" ขนาดกะทัดรัดคล้ายกับฟังก์ชันการลงจุดของMATLAB®

6
วิธีอัปเดตพล็อตแบบไดนามิกในลูปในสมุดบันทึก Ipython (ภายในเซลล์เดียว)
สภาพแวดล้อม: Python 2.7, matplotlib 1.3, IPython notebook 1.1, linux, chrome รหัสอยู่ในเซลล์อินพุตเดียวโดยใช้--pylab=inline ฉันต้องการใช้สมุดบันทึก IPython และแพนด้าเพื่อใช้สตรีมและอัปเดตพล็อตแบบไดนามิกทุกๆ 5 วินาที เมื่อฉันใช้คำสั่งพิมพ์เพื่อพิมพ์ข้อมูลในรูปแบบข้อความมันทำงานได้ดีอย่างสมบูรณ์: เซลล์ผลลัพธ์จะเก็บข้อมูลการพิมพ์และเพิ่มแถวใหม่ แต่เมื่อฉันพยายามลงจุดข้อมูล (แล้วอัปเดตแบบวนซ้ำ) พล็อตจะไม่ปรากฏในเซลล์ผลลัพธ์ แต่ถ้าฉันลบลูปออกก็แค่ลงจุดครั้ง มันทำงานได้ดี จากนั้นฉันก็ทำการทดสอบง่ายๆ: i = pd.date_range('2013-1-1',periods=100,freq='s') while True: plot(pd.Series(data=np.random.randn(100), index=i)) #pd.Series(data=np.random.randn(100), index=i).plot() also tried this one time.sleep(5) ผลลัพธ์จะไม่แสดงอะไรเลยจนกว่าฉันจะขัดจังหวะกระบวนการด้วยตนเอง (ctrl + m + i) และหลังจากที่ฉันขัดจังหวะพล็อตจะแสดงเป็นเส้นที่ทับซ้อนกันหลายบรรทัดอย่างถูกต้อง แต่สิ่งที่ฉันต้องการจริงๆคือพล็อตที่แสดงและได้รับการอัปเดตทุก ๆ 5 วินาที (หรือเมื่อใดก็ตามที่มีplot()การเรียกใช้ฟังก์ชันเช่นเดียวกับผลลัพธ์ของคำสั่งพิมพ์ที่ฉันกล่าวถึงข้างต้นซึ่งทำงานได้ดี) …


3
วิธีที่ถูกต้องในปัจจุบันในการอัปเดตพล็อตแบบไดนามิกใน Jupyter / iPython คืออะไร
ในคำตอบของวิธีอัปเดตพล็อตแบบไดนามิกในลูปในโน้ตบุ๊ก ipython (ภายในเซลล์เดียว) จะมีตัวอย่างวิธีการอัปเดตพล็อตแบบไดนามิกภายในสมุดบันทึก Jupyter ภายในลูป Python อย่างไรก็ตามการทำงานนี้ทำได้โดยการทำลายและสร้างพล็อตใหม่ในการทำซ้ำทุกครั้งและความคิดเห็นในหนึ่งในเธรดตั้งข้อสังเกตว่าสถานการณ์นี้สามารถปรับปรุงได้โดยใช้%matplotlib nbaggเวทมนตร์ใหม่ซึ่งให้รูปแบบโต้ตอบที่ฝังอยู่ในสมุดบันทึก มากกว่าภาพนิ่ง อย่างไรก็ตามnbaggฟีเจอร์ใหม่ที่ยอดเยี่ยมนี้ดูเหมือนจะไม่มีเอกสารโดยสมบูรณ์เท่าที่ฉันสามารถบอกได้และฉันไม่พบตัวอย่างวิธีใช้เพื่ออัปเดตพล็อตแบบไดนามิก ดังนั้นคำถามของฉันคือวิธีหนึ่งจะอัปเดตพล็อตที่มีอยู่ในสมุดบันทึก Jupyter / Python อย่างมีประสิทธิภาพโดยใช้แบ็กเอนด์ nbagg ได้อย่างไร เนื่องจากการอัปเดตพล็อตแบบไดนามิกใน matplotlib เป็นปัญหาที่ยุ่งยากโดยทั่วไปตัวอย่างการทำงานที่เรียบง่ายจึงเป็นตัวช่วยอย่างมาก ตัวชี้ไปยังเอกสารใด ๆ ในหัวข้อก็มีประโยชน์อย่างยิ่งเช่นกัน เพื่อให้ชัดเจนว่าฉันต้องการอะไร: สิ่งที่ฉันต้องการทำคือเรียกใช้โค้ดจำลองสำหรับการทำซ้ำสองสามครั้งจากนั้นวาดพล็อตของสถานะปัจจุบันจากนั้นเรียกใช้เพื่อทำซ้ำอีกสองสามครั้งจากนั้นอัปเดตพล็อตเพื่อสะท้อน สถานะปัจจุบันและอื่น ๆ ดังนั้นแนวคิดคือการวาดพล็อตจากนั้นโดยไม่มีการโต้ตอบใด ๆ จากผู้ใช้ให้อัปเดตข้อมูลในพล็อตโดยไม่ทำลายและสร้างสิ่งใหม่ทั้งหมด ต่อไปนี้เป็นโค้ดที่แก้ไขเล็กน้อยจากคำตอบของคำถามที่เชื่อมโยงด้านบนซึ่งทำได้โดยการวาดรูปใหม่ทุกครั้ง ฉันต้องการบรรลุผลลัพธ์เดียวกัน แต่มีประสิทธิภาพมากขึ้นโดยใช้nbaggไฟล์. %matplotlib inline import time import pylab as pl from IPython import display for i in range(10): …

8
matplotlib: จัดรูปแบบค่าชดเชยแกนเป็นจำนวนเต็มหรือจำนวนเฉพาะ
ฉันมีรูป matplotlib ซึ่งฉันกำลังพล็อตข้อมูลที่มักเรียกว่านาโนวินาที (1e-9) บนแกน y ถ้าฉันมีข้อมูลที่มีค่าหลายสิบนาโนวินาทีเช่น 44e-9 ค่าบนแกนจะแสดงเป็น 4.4 โดยมี + 1e-8 เป็นค่าชดเชย มีการบังคับให้แกนแสดง 44 ด้วยออฟเซ็ต + 1e-9 หรือไม่? เช่นเดียวกันกับแกน x ของฉันที่แกนแสดง + 5.54478e4 โดยที่ฉันอยากให้มันแสดงค่าออฟเซ็ตเป็น +55447 (จำนวนเต็มไม่มีทศนิยม - ค่าในที่นี้คือวัน) ฉันได้ลองสองสามสิ่งดังนี้: p = axes.plot(x,y) p.ticklabel_format(style='plain') สำหรับแกน x แต่มันใช้ไม่ได้แม้ว่าฉันอาจจะใช้มันไม่ถูกต้องหรือตีความบางอย่างจากเอกสารผิดใครบางคนสามารถชี้ฉันไปในทิศทางที่ถูกต้องได้ไหม ขอบคุณโจนาธาน ฉันพยายามทำอะไรบางอย่างกับฟอร์แมต แต่ยังไม่พบวิธีแก้ปัญหาใด ๆ ... : myyfmt = ScalarFormatter(useOffset=True) myyfmt._set_offset(1e9) axes.get_yaxis().set_major_formatter(myyfmt) และ …

3
วิธีสร้างพล็อตการกระจาย 3 มิติใน Python
ขณะนี้ฉันมีอาร์เรย์เมทริกซ์ nx3 ฉันต้องการพล็อตสามคอลัมน์เป็นสามแกน ฉันจะทำเช่นนั้นได้อย่างไร? ฉันได้ googled และมีคนแนะนำให้ใช้Matlabแต่ฉันรู้สึกลำบากในการทำความเข้าใจ ฉันยังต้องการให้เป็นพล็อตกระจาย ใครช่วยสอนหน่อย

1
Seaborn แสดงสัญกรณ์ทางวิทยาศาสตร์ในแผนที่ความร้อนสำหรับตัวเลข 3 หลัก
ฉันกำลังสร้างแผนที่ความร้อนจาก pivot_table แพนด้าดังต่อไปนี้: table2 = pd.pivot_table(df,values='control',columns='Year',index='Region',aggfunc=np.sum) sns.heatmap(table2,annot=True,cmap='Blues') จะสร้างแผนที่ความร้อนดังที่แสดงด้านล่าง คุณสามารถเห็นตัวเลขไม่มาก (สูงสุด 750) แต่แสดงเป็นสัญกรณ์ทางวิทยาศาสตร์ ถ้าฉันดูตารางเองก็ไม่เป็นเช่นนั้น มีความคิดอย่างไรที่จะแสดงตัวเลขในสัญกรณ์ธรรมดา

7
รัน% matplotlib แบบอินไลน์โดยอัตโนมัติใน IPython Notebook
ทุกครั้งที่เปิด IPython Notebook คำสั่งแรกที่เรียกใช้คือ %matplotlib inline มีวิธีใดบ้างในการเปลี่ยนไฟล์กำหนดค่าของฉันเพื่อที่เมื่อฉันเปิดใช้งาน IPython ไฟล์นั้นจะอยู่ในโหมดนี้โดยอัตโนมัติหรือไม่

5
ฉันจะรับแผนโต้ตอบอีกครั้งใน Spyder / IPython / matplotlib ได้อย่างไร
ฉันอัปเกรดจาก Python (x, y) 2.7.2.3 เป็น2.7.6.0ใน Windows 7 (และดีใจที่เห็นว่าในที่สุดฉันก็สามารถพิมพ์function_name?และดู docstring ใน Object Inspector ได้อีกครั้ง) แต่ตอนนี้การพล็อตไม่ได้ผล เคย. ก่อนหน้านี้ (Spyder 2.1.9, IPython 0.10.2, matplotlib 1.2.1) ตัวอย่างเช่นเมื่อฉันลงจุดสคริปต์นี้มันจะพล็อตพล็อตย่อยเคียงข้างกันในหน้าต่างโต้ตอบ: ตอนนี้ (Spyder 2.2.5, IPython 1.2.0, Matplotlib 1.3.1) เมื่อฉันพยายามพล็อตสิ่งต่าง ๆ มันจะทำพล็อตย่อยเป็น PNG แบบอินไลน์เล็ก ๆ ซึ่งเป็นการเปลี่ยนแปลงใน IPython : ดังนั้นฉันจึงเข้าไปในตัวเลือกและพบสิ่งนี้: ซึ่งดูเหมือนจะบอกว่าฉันสามารถเอาแผนโต้ตอบแบบเก่ากลับมาได้โดยมี 4 พล็อตย่อยที่แสดงเคียงข้างกัน แต่เมื่อฉันเปลี่ยนเป็น "อัตโนมัติ" และพยายามที่จะพล็อตบางอย่าง ไม่มีพล็อตเลย ถ้าฉันเปลี่ยนดรอปดาวน์นี้เป็น Qt …

5
วิธีสร้างหลายแปลงในหน้าเดียวโดยใช้ matplotlib
ฉันเขียนโค้ดที่เปิด 16 ตัวเลขพร้อมกัน ปัจจุบันทั้งหมดเปิดเป็นกราฟแยกกัน ฉันต้องการให้พวกเขาเปิดทั้งหมดในหน้าเดียวกัน ไม่ใช่กราฟเดียวกัน ฉันต้องการ 16 กราฟแยกกันในหน้าเดียว / หน้าต่าง ด้วยเหตุผลบางประการรูปแบบของตัวเลขและค่าเริ่มต้นจะไม่ถือรูปที่ 1 ที่ผ่านมาฉันจำเป็นต้องใช้คำสั่ง subplot หรือไม่? ฉันไม่เข้าใจว่าทำไมฉันต้องทำ แต่คิดไม่ออกว่าจะทำอะไรอีก? import csv import scipy.stats import numpy import matplotlib.pyplot as plt for i in range(16): plt.figure(i) filename= easygui.fileopenbox(msg='Pdf distance 90m contour', title='select file', filetypes=['*.csv'], default='X:\\herring_schools\\') alt_file=open(filename) a=[] for row in csv.DictReader(alt_file): a.append(row['Dist_90m(nmi)']) y= …

12
scipy: savefig โดยไม่มีเฟรมแกนเนื้อหาเท่านั้น
ใน numpy / scipy ฉันมีภาพเก็บไว้ในอาร์เรย์ ฉันสามารถแสดงได้ฉันต้องการบันทึกโดยsavefig ไม่มีขอบแกนป้ายชื่อเรื่อง ... เป็นเพียงภาพที่บริสุทธิ์ไม่มีอะไรอื่น ฉันต้องการหลีกเลี่ยงแพ็กเกจเช่นPyPNGหรือscipy.misc.imsaveบางครั้งก็มีปัญหา (ไม่ได้ติดตั้งได้ดีเสมอไป แต่เป็นพื้นฐานsavefig()สำหรับฉันเท่านั้น

5
Python matplotlib หลายแท่ง
วิธีการลงจุดหลายแท่งใน matplotlib เมื่อฉันพยายามเรียกใช้ฟังก์ชัน bar หลาย ๆ ครั้งมันจะทับซ้อนกันและดังที่เห็นด้านล่างค่าสูงสุดสีแดงสามารถมองเห็นได้เท่านั้น ฉันจะพล็อตแท่งหลายแท่งพร้อมวันที่บนแกน x ได้อย่างไร จนถึงตอนนี้ฉันได้ลองสิ่งนี้: import matplotlib.pyplot as plt import datetime x = [ datetime.datetime(2011, 1, 4, 0, 0), datetime.datetime(2011, 1, 5, 0, 0), datetime.datetime(2011, 1, 6, 0, 0) ] y = [4, 9, 2] z = [1, 2, 3] k = [11, 12, …

3
กระจายพล็อตและการแมปสีใน Python
ฉันมีช่วงของจุด x และ y ที่เก็บไว้ในอาร์เรย์จำนวนนับ สิ่งเหล่านี้แสดงถึง x (t) และ y (t) โดยที่ t = 0 ... T-1 ฉันกำลังวางพล็อตกระจายโดยใช้ import matplotlib.pyplot as plt plt.scatter(x,y) plt.show() ฉันต้องการมี colormap แทนเวลา (ดังนั้นการระบายสีจุดขึ้นอยู่กับดัชนีในอาร์เรย์จำนวนนับ) วิธีที่ง่ายที่สุดคืออะไร?

11
ไม่มีหน้าต่างพล็อตใน matplotlib
ฉันเพิ่งติดตั้ง matplotlib ใน Ubuntu 9.10 โดยใช้ระบบแพ็คเกจ synaptic อย่างไรก็ตามเมื่อฉันลองใช้ตัวอย่างง่ายๆต่อไปนี้ >>> from pylab import plot; >>> plot([1,2,3],[1,2,3]) [<matplotlib.lines.Line2D object at 0x9aa78ec>] ฉันไม่มีหน้าต่างพล็อต มีแนวคิดในการแสดงหน้าต่างพล็อตอย่างไร

3
matplotlib colorbar สำหรับกระจาย
ฉันกำลังทำงานกับข้อมูลที่มีข้อมูลที่มีพารามิเตอร์การพล็อต 3 พารามิเตอร์: x, y, c คุณสร้างค่าสีที่กำหนดเองสำหรับพล็อตกระจายได้อย่างไร การขยายตัวอย่างนี้ฉันกำลังพยายามทำ: import matplotlib import matplotlib.pyplot as plt cm = matplotlib.cm.get_cmap('RdYlBu') colors=[cm(1.*i/20) for i in range(20)] xy = range(20) plt.subplot(111) colorlist=[colors[x/2] for x in xy] #actually some other non-linear relationship plt.scatter(xy, xy, c=colorlist, s=35, vmin=0, vmax=20) plt.colorbar() plt.show() แต่ผลลัพธ์คือ TypeError: You must first set_array …

4
บันทึกแปลงเป็น PDF
โมดูลการวางแผน def plotGraph(X,Y): fignum = random.randint(0,sys.maxint) plt.figure(fignum) ### Plotting arrangements ### return fignum โมดูลหลัก import matplotlib.pyplot as plt ### tempDLStats, tempDLlabels are the argument plot1 = plotGraph(tempDLstats, tempDLlabels) plot2 = plotGraph(tempDLstats_1, tempDLlabels_1) plot3 = plotGraph(tempDLstats_2, tempDLlabels_2) plt.show() ฉันต้องการบันทึกกราฟ plot1, plot2, plot3 ทั้งหมดเป็นไฟล์ PDF ไฟล์เดียว มีวิธีใดบ้างที่จะบรรลุ? ฉันไม่สามารถรวมplotGraphฟังก์ชันในโมดูลหลักได้ มีฟังก์ชันที่ตั้งชื่อpylab.savefigแต่ดูเหมือนว่าจะใช้งานได้ก็ต่อเมื่อวางไว้พร้อมกับโมดูลการวางแผน มีวิธีอื่นอีกไหมที่จะทำให้สำเร็จ?

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.