Π§ΡΠΎΠ±Ρ Π΄ΠΎΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΠΠ»Π΅Π½Π΄Π΅Ρ Π°Π΄Π°ΠΏΡΠΈΡΡΠ΅ΡΡΡ ΠΊΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌ Π·Π°Π΄Π°ΡΠ°ΠΌ ΠΏΠΎΠΌΠΈΠΌΠΎ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ 3D-Π³ΡΠ°ΡΠΈΠΊΠΈ, ΠΌΡ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ ΠΠ°ΠΌ, ΠΊΠ°ΠΊ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Π²Π½Π΅ΡΠ½ΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅ (ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½Π°Ρ ΡΠ°Π±Π»ΠΈΡΠ° Π² ΡΠΎΡΠΌΠ°ΡΠ΅ CSV) ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π·Π°Π΄Π°ΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΉ Π² 3D Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΠ΄Π΅Ρ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΠ»Π΅Π½Π΄Π΅Ρ Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠΌΠΈ Π΅ΠΌΡ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠΊΡΠΈΠΏΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΈΡΠ°Π΅Ρ .csv ΡΠ°ΠΉΠ», ΡΠ΅Π½Π΄Π΅ΡΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΡΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΠΈ. Π§ΡΠΎΠ±Ρ ΡΡΠΎ Π±ΡΠ»ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ, Π½Π°ΠΌ Π½ΡΠΆΠ΅Π½ ΡΠΏΠΎΡΠΎΠ± Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΠ»Π΅Π½Π΄Π΅Ρ Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ. ΠΡ Π΄ΠΎΠΉΠ΄ΡΠΌ ΡΠΊΠΎΡΠΎ Π΄ΠΎ ΡΡΠΎΠ³ΠΎ ΡΠΊΡΠΈΠΏΡΠ°, Π½ΠΎ ΡΠ½Π°ΡΠ°Π»Π° Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ²ΠΈΠ΄ΠΈΠΌ, ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π² ΠΠ»Π΅Π½Π΄Π΅Ρ, ΡΡΠΎΠ±Ρ ΠΎΠ½ Π·Π°ΠΏΡΡΠΊΠ°Π» ΡΠΊΡΠΈΠΏΡ Π½Π° ΠΠΈΡΠΎΠ½Π΅:
blender -P /full/path/to/barchart.py
Π’Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠΊΡΠΈΠΏΡ ΠΈΠ· ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎ Π±ΡΡΠ΅ΡΠ° Π²Π½ΡΡΡΠΈ .blend ΡΠ°ΠΉΠ»Π° ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΡΡΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎ Π±ΡΡΠ΅ΡΠ°. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π² ΡΡΠΎΠΌΡ ΡΠ»ΡΡΠ°Π΅ - ΡΠ½Π°ΡΠ°Π»Π° ΡΡΠ°Π²ΠΈΡΡΡ ΠΈΠΌΡ .blend ΡΠ°ΠΉΠ»Π°:
blender barchart.blend -P barchart.py
Π ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΠΌΡ, ΡΡΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ API, Π² ΠΠΈΡΠΎΠ½Π΅ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
import sys
print sys.argv
ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ Π²ΡΠ²Π΅Π΄Π΅Ρ Π²ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ, Π²ΠΊΠ»ΡΡΠ°Ρ ΠΈΠΌΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΠ»Π΅Π½Π΄Π΅ΡΠ° ΠΏΠ΅ΡΠ²ΡΠΌ. ΠΠ°Ρ ΡΠΊΡΠΈΠΏΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡΠΎΠΏΡΡΠΊΠ°ΡΡ Π»ΡΠ±ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠ΅ Π΄Π»Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΠ»Π΅Π½Π΄Π΅ΡΠ° ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ°. ΠΡΠ±ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ, ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌΡΠ΅ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Π½Π°ΡΠ΅Π³ΠΎ ΡΠΊΡΠΈΠΏΡΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠΎΠ²Π°Π½Ρ ΡΠ°ΠΌΠΈΠΌ ΠΠ»Π΅Π½Π΄Π΅ΡΠΎΠΌ, Π΄ΠΎΠ»ΠΆΠ½Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΠΏΠΎΡΠ»Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΊΠΎΠ½ΡΠ°-ΠΎΠΏΡΠΈΠΉ (end-of-options), Π΄Π²ΠΎΠΉΠ½ΠΎΠ³ΠΎ ΠΌΠΈΠ½ΡΡΠ° (--).
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΠΌΡ Π½Π΅ Ρ ΠΎΡΠΈΠΌ, ΡΡΠΎΠ±Ρ ΠΠ»Π΅Π½Π΄Π΅Ρ ΠΏΠΎΡΠ²Π»ΡΠ»ΡΡ ΠΈ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π» Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ, ΠΌΡ ΡΠΊΠ°ΠΆΠ΅ΠΌ Π΅ΠΌΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΡΠΎΠ½Π΅ ΠΈ Π²ΡΠΉΡΠΈ ΠΏΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ. ΠΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΠΏΡΠΎΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΎΠΏΡΠΈΠΈ -b. ΠΠ°Π΄Π°Π² Π²ΡΡ ΡΡΠΎ Π²ΠΌΠ΅ΡΡΠ΅, ΠΊΠΎΠΌΠ°Π½Π΄Π½Π°Ρ ΡΡΡΠΎΠΊΠ° Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΏΠΎΡ ΠΎΠΆΠ΅ΠΉ Π½Π° ΡΡΠΎ:
blender -b barchart.blend -P barchart.py β- data.csv
ΠΡΠ»ΠΈ ΠΠ»Π΅Π½Π΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² ΡΠΎΠ½ΠΎΠ²ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅, ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ .blend ΡΠ°ΠΉΠ», Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΠ»Π΅Π½Π΄Π΅Ρ ΡΠ°Π·ΡΡΡΠΈΡΡΡ. ΠΡΠ»ΠΈ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ .blend ΡΠ°ΠΉΠ», ΠΌΡ ΡΠ°ΠΊ ΠΆΠ΅ Ρ ΠΎΡΠΎΡΠΎ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΡΠ΅ΠΊΡΡ Π΄Π»Ρ Π½Π°ΡΠ΅Π³ΠΎ ΡΠΊΡΠΈΠΏΡΠ° Π½Π° ΠΠΈΡΠΎΠ½Π΅, ΠΈΠ½Π°ΡΠ΅ Π½Π°ΠΌ ΠΏΡΠΈΡΠ»ΠΎΡΡ Π±Ρ Π΄Π΅ΡΠΆΠ°ΡΡ Π΄Π²Π° ΡΠ°ΠΉΠ»Π° ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π²ΠΌΠ΅ΡΡΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ.
ΠΠ΄Π΅ΡΡ ΠΌΡ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ Π²Π°ΠΆΠ½ΡΠ΅ ΡΠ°ΡΡΠΈ ΠΊΠΎΠ΄Π° ΠΊΡΡΠΊΠ°ΠΌΠΈ (ΠΏΠΎΠ»Π½ΡΠΉ ΡΠ°ΠΉΠ» Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΊΠ°ΠΊ barchart.blend, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ barchart.py ΠΊΠ°ΠΊ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠΉ ΡΠ΅ΠΊΡΡ). ΠΡ Π½Π°ΡΠΈΠ½Π°Π΅ΠΌ Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΠΈΡΠ° ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠ²Π΅ΡΠΎΠ² Π΅Π³ΠΎ Π·Π΅Π½ΠΈΡΠ° ΠΈ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ° ΡΠ΅Π»ΠΈΠΊΠΎΠΌ Π² Π½Π΅ΠΉΡΡΠ°Π»ΡΠ½ΡΠΉ Π±Π΅Π»ΡΠΉ (Π²ΡΠ΄Π΅Π»Π΅Π½Π½Π°Ρ ΡΠ°ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°):
if __name__ == '__main__':
w=World.New('BarWorld')
w.setHor([1,1,1])
w.setZen([1,1,1])
ΠΠ°ΡΠ΅ΠΌ, ΠΌΡ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ, ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠΉ Π² ΠΠ»Π΅Π½Π΄Π΅Ρ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π° ΡΠ΅ΠΌ ΠΆΠ΅ ΡΠ°ΠΌΡΠΌ .csv. Π Π΅Π°Π»ΡΠ½ΡΠΉ ΠΏΡΠΎΠΌΡΡΠ»Π΅Π½Π½ΡΠΉ ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΈΠΌΠ΅ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΡΡΡΠ·Π½ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ Π½Π° ΠΎΡΠΈΠ±ΠΊΠΈ:
csv = sys.argv[-1]
if csv.endswith('.csv'):
ΠΡΠ»ΠΈ Ρ Π½Π΅Π³ΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅, ΠΌΡ ΡΠΎΠ·Π΄Π°ΡΠΌ Π½ΠΎΠ²ΡΡ Π‘ΡΠ΅Π½Ρ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ BarScene ΠΈ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΠΌ Π΅Ρ Π°ΡΡΠΈΠ±ΡΡ world ΠΊ Π½Π°ΡΠ΅ΠΌΡ Π²Π½ΠΎΠ²Ρ ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠΌΡ ΠΌΠΈΡΡ (ΠΡΠΎ Π±ΡΠ»ΠΎ Π²Π΄ΠΎΡ Π½ΠΎΠ²Π»Π΅Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠΌ ΡΡΠ΅Π½Π°ΡΠΈΠ΅ΠΌ jessethemid Π½Π° Blender Artists http://blenderartists.org/forum/showthread.php?t=79285). Π€ΠΎΠ½ΠΎΠ²ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ Π½Π΅ Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ .blend ΡΠ°ΠΉΠ»Π° ΠΏΠΎ-ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΡΠ°ΠΊ ΡΡΠΎ ΡΡΠ΅Π½Π° ΠΏΠΎ-ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΏΡΠΎΡΡΠΎ, ΡΡΠΎΠ±Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ Π½ΠΎΠ²ΡΡ ΠΏΡΡΡΡΡ ΡΡΠ΅Π½Ρ ΡΠΎ Π·Π½Π°ΡΠΈΠΌΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π½Π°ΡΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΡ:
sc=Scene.New('BarScene')
sc.world=w
sc.makeCurrent()
ΠΠ°ΡΠ΅ΠΌ, ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΠΌ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° Π² ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΡ barchart (Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ) Π½Π° ΡΠ΅ΠΊΡΡΡΡ ΡΡΠ΅Π½Ρ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ΅Π½ΡΡ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ, ΡΡΠΎΠ±Ρ Π½Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΡ addcamera() ΠΌΠΎΠ³Π»Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ, ΡΡΠΎΠ±Ρ Π½Π°ΠΏΡΠ°Π²ΠΈΡΡ ΡΡΠ΄Π° ΠΊΠ°ΠΌΠ΅ΡΡ. ΠΡ ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π»Π°ΠΌΠΏΡ, ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ΅Π½Π΄Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ (Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π½Π°Ρ ΡΠ΅Π½Π΄Π΅Ρ Π±ΡΠ΄Π΅Ρ Π²Π΅ΡΡ ΡΠ΅ΡΠ½ΡΠΉ).
center = barchart(sys.argv[-1])
addcamera(center)
addlamp()
Π Π΅Π½Π΄Π΅ΡΠΈΠ½Π³ ΡΠ°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ (ΠΌΡ ΡΡΠΎΠ»ΠΊΠ½Π΅ΠΌΡΡ Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠΌΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ Π² ΠΠ»Π°Π²Π΅ 8, Π Π΅Π½Π΄Π΅ΡΠΈΠ½Π³ ΠΈ ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ). ΠΡ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅ΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π°, ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΡΠ°Π½ΠΈΡ Π²ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½ΠΎΠΌΠ΅Ρ ΠΊΠ°Π΄ΡΠ°, ΠΊΠ°ΠΊΠΎΠΉ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΠΎΡΠΌΠ°Ρ, ΡΠ°Π·ΠΌΠ΅Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. Π, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ°Π·ΡΠΌΠ½Ρ, ΠΌΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ ΡΠΎΠ»ΡΠΊΠΎ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΠΎΡΠΌΠ°Ρ Π½Π° PNG ΠΈ Π·Π°ΠΏΡΡΡΠΈΠΌ ΡΠ΅Π½Π΄Π΅Ρ.
context=sc.getRenderingContext()
context.setImageType(Scene.Render.PNG)
context.render()
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΠΌΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Π² ΠΏΡΡΡΡΡ ΡΡΡΠΎΠΊΡ, ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ Π½Π°Ρ Π²ΡΠ²ΠΎΠ΄ Π² ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ (ΠΊΠ°ΡΠ°Π»ΠΎΠ³, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΡ Π±ΡΠ»ΠΈ, ΠΊΠΎΠ³Π΄Π° Π²ΡΠ·ΡΠ²Π°Π»ΠΈ ΠΠ»Π΅Π½Π΄Π΅Ρ) ΠΈ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ Π½Π°ΡΠ΅ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅. ΠΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΠΎ ΠΆΠ΅ Π±Π°Π·ΠΎΠ²ΠΎΠ΅ ΠΈΠΌΡ, ΠΊΠ°ΠΊ Ρ .csv-ΡΠ°ΠΉΠ»Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΠΏΡΠΈΠ½ΡΠ»ΠΈ ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ²ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ, Π½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ .png. ΠΡ ΠΏΡΠΎΠ²Π΅ΡΠΈΠ»ΠΈ, ΡΡΠΎ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΡΡΡ Π½Π° .csv, ΡΠ°ΠΊ ΡΡΠΎ Π²ΠΏΠΎΠ»Π½Π΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ ΡΡΠΏΠΎ ΡΠ΄Π°Π»ΠΈΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ ΡΠ΅ΡΡΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Π° ΠΈΠ· ΠΈΠΌΠ΅Π½ΠΈ ΡΠ°ΠΉΠ»Π° ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ .png
context.setRenderPath('')
context.saveRenderedImage(csv[:-4]+'.png')
ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π»Π°ΠΌΠΏΡ Π½Π΅ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π»ΡΠ±ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΈ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΡ "hello world". ΠΡ ΡΠΎΠ·Π΄Π°ΡΠΌ Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Lamp, Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π΅Π³ΠΎ ΠΊ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΡΠ΅Π½Π΅ ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π΅Π³ΠΎ ΠΏΠΎΠ·ΠΈΡΠΈΡ. ΠΠ±ΡΠ΅ΠΊΡ Lamp ΠΈΠΌΠ΅Π΅Ρ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΌΠ½ΠΎΠ³ΠΎ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², Π½ΠΎ ΠΌΡ Π² ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π΄ΠΎΠ²ΠΎΠ»ΡΡΡΠ²ΡΠ΅ΠΌΡΡ Π½Π΅-Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΉ Π»Π°ΠΌΠΏΠΎΠΉ ΠΏΠΎ-ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΡΠ΄Π΅Π»Π΅Π½Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠΈΠΏΠΈΡΠ½ΡΡ ΠΈΠ΄ΠΈΠΎΠΌΡ ΠΠΈΡΠΎΠ½Π°: loc - ΠΊΠΎΡΡΠ΅ΠΆ ΠΈΠ· ΡΡΠ΅Ρ Π²Π΅Π»ΠΈΡΠΈΠ½, Π½ΠΎ setLocation() ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΡΠΈ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°, ΡΠ°ΠΊ ΡΡΠΎ ΠΌΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ, ΡΡΠΎ Ρ ΠΎΡΠΈΠΌ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²Π°ΡΡ ΠΊΠΎΡΡΠ΅ΠΆ Π½Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ * Π½ΠΎΡΠ°ΡΠΈΠΈ:
def addlamp(loc=(0.0,0.0,10.0)):
sc = Scene.GetCurrent()
la = Lamp.New('Lamp')
ob = sc.objects.new(la)
ob.setLocation(*loc)
ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΌΠ΅ΡΡ Π±ΡΠ΄Π΅Ρ ΡΡΡΡ-ΡΡΡΡ ΡΠ»ΠΎΠΆΠ½Π΅Π΅, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π½Π°ΠΏΡΠ°Π²ΠΈΡΡ Π΅Ρ Π½Π° Π½Π°ΡΡ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΡΠ³ΠΎΠ» ΠΎΠ±Π·ΠΎΡΠ° Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠΈΡΠΎΠΊΠΈΠΉ, ΡΡΠΎΠ±Ρ Π²ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΡ. ΠΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ Π·Π΄Π΅ΡΡ ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π½ΡΡ ΠΊΠ°ΠΌΠ΅ΡΡ ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠΈΡΠΎΠΊΠΈΠΉ ΡΠ³ΠΎΠ». ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΊΠ°ΠΌΠ΅ΡΠ° ΠΏΠΎ-ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠΆΠ΅ ΡΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π° Π²Π΄ΠΎΠ»Ρ ΠΎΡΠΈ z, ΠΌΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π°Π΄Π°Π²Π°ΡΡ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ, ΡΠΎΠ»ΡΠΊΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ ΠΏΠΎΠ·ΠΈΡΠΈΡ Π² 12 Π΅Π΄ΠΈΠ½ΠΈΡ ΠΎΡ ΡΠ΅Π½ΡΡΠ° Π²Π΄ΠΎΠ»Ρ ΠΎΡΠΈ z, ΠΊΠ°ΠΊ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΎ Π½Π° Π²ΡΠΎΡΠΎΠΉ ΡΠ½ΠΈΠ·Ρ ΡΡΡΠΎΠΊΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°:
def addcamera(center):
sc = Scene.GetCurrent()
ca = Camera.New('persp','Camera')
ca.angle=75.0
ob = sc.objects.new(ca)
ob.setLocation(center[0],center[1],center[2]+12.0)
sc.objects.camera=ob
Π‘Π°ΠΌΠ° ΡΡΠ½ΠΊΡΠΈΡ barchart Π½Π΅ ΡΠ°ΠΊΠ°Ρ ΡΠΆ Π±ΠΎΠ»ΡΡΠ°Ρ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΡΡΡ. ΠΡ ΠΎΡΠΊΡΡΠ²Π°Π΅ΠΌ ΡΠ°ΠΉΠ» Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ csv ΠΈΠ· ΠΠΈΡΠΎΠ½Π°, ΡΡΠΎΠ±Ρ ΡΠΈΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· ΡΠ°ΠΉΠ»Π°. ΠΡ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌ Π²ΡΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ΡΡΠΎΠ»Π±ΡΠΎΠ² Π² xlabel, Π° ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π² rows (ΡΡΡΠΎΠΊΠΈ).
from csv import DictReader
def barchart(filename):
csv = open(filename)
data = DictReader(csv)
xlabel = data.fieldnames[0]
rows = [d for d in data]
ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°ΡΡ Π½Π°ΡΡ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄ΠΎ ΡΠ°Π·ΡΠΌΠ½ΡΡ Π²Π΅Π»ΠΈΡΠΈΠ½, ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΏΡΠ΅Π΄Π΅Π»Ρ Π΄Π°Π½Π½ΡΡ . ΠΠ΅ΡΠ²ΡΠΉ ΡΡΠΎΠ»Π±Π΅Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ x (ΠΈΠ»ΠΈ ΠΌΠ΅ΡΠΊΡ), ΡΠ°ΠΊ ΡΡΠΎ ΠΌΡ ΠΈΡΠΊΠ»ΡΡΠ°Π΅ΠΌ Π΅Π³ΠΎ ΠΈΠ· Π½Π°ΡΠ΅Π³ΠΎ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΠ°ΠΆΠ΄Π°Ρ Π²Π΅Π»ΠΈΡΠΈΠ½Π° Π·Π°Π³ΡΡΠΆΠ΅Π½Π° Π² Π²ΠΈΠ΄Π΅ ΡΡΡΠΎΠΊΠΈ, ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ Π΅Ρ Π² Π²Π΅Π»ΠΈΡΠΈΠ½Ρ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ Π΄Π»Ρ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΉ.
maximum = max([float(r[n]) for n in data.fieldnames[1:]
for r in rows])
minimum = min([float(r[n]) for n in data.fieldnames[1:]
for r in rows])
Π§ΡΠΎΠ±Ρ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎΠ·Π΄Π°ΡΡ ΡΡΠΎΠ»Π±ΠΈΠΊΠΈ, ΠΌΡ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΠΌ ΠΏΠΎ Π²ΡΠ΅ΠΌ ΡΡΡΠΎΠΊΠ°ΠΌ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ x ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠΉ ΠΌΠ΅ΡΠΊΠΎΠΉ (ΠΊΠ°ΠΊ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΌΠ΅ΡΡΡΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ), ΠΌΡ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ ΡΠΈΡΡΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ x Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΎΠ»Π±ΠΈΠΊΠΈ. Π‘Π°ΠΌΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ x Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ ΠΊ ΡΡΠ΅Π½Π΅ Π² Π²ΠΈΠ΄Π΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Text3d ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ label(), ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ y Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·ΠΈΡΡΡΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ Cube (ΠΡΠ±), Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌΡΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ bar(). Π€ΡΠ½ΠΊΡΠΈΠΈ label() ΠΈ bar() Π½Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ Π·Π΄Π΅ΡΡ.
for x,row in enumerate(rows):
lastx=x
label(row[xlabel],(x,10,0))
for y,ylabel in enumerate(data.fieldnames[1:]):
bar(10.0*(float(row[ylabel])-minimum)/maximum,
(x,0,y+1))
x = lastx+1
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΠΌΡ ΠΏΠΎΠ΄ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΡΠΎΠ»Π±Π΅Ρ (ΡΠΎ Π΅ΡΡΡ, ΠΊΠ°ΠΆΠ΄ΡΠΉ Π½Π°Π±ΠΎΡ Π΄Π°Π½Π½ΡΡ ) ΡΠ²ΠΎΠΈΠΌ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ ΡΡΠΎΠ»Π±ΡΠ° ΠΊΠ°ΠΊ label. ΠΡ ΡΠΎΡ ΡΠ°Π½ΠΈΠ»ΠΈ ΡΠΈΡΠ»ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΠΎ x, ΡΠ°ΠΊ ΡΡΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²Π΅ΡΠ½ΡΡΡ ΡΠ΅Π½ΡΡ Π½Π°ΡΠ΅ΠΉ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π΅Π»Ρ Π΅Π³ΠΎ Π½Π° Π΄Π²Π° (y-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Π½Π° 5.0, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π»ΠΈ Π²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ y, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ Π»Π΅ΠΆΠ°Π»ΠΈ Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΎΡ 0 Π΄ΠΎ 10).
for y,ylabel in enumerate(data.fieldnames[1:]):
label(ylabel,(x,0,y+0.5),'x')
return (lastx/2.0,5.0,0.0)