"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية رسم خط بألوان مختلفة لكل قطعة مكونة من 10 نقاط متتالية؟

كيفية رسم خط بألوان مختلفة لكل قطعة مكونة من 10 نقاط متتالية؟

تم النشر بتاريخ 2024-11-14
تصفح:280

How to Plot a Line with Varying Colors for Each Segment of 10 Consecutive Points?

رسم خط بألوان مختلفة

بيان المشكلة

بالنظر إلى قائمتين، latt و lont، فإن الهدف هو رسم خط واحد حيث كل منهما يتم تمثيل قطعة من 10 نقاط متتالية بلون مختلف.

الحل

عدد محدود من شرائح الخط

إذا كان عدد مقاطع الخط صغيرًا، مثل 10 أو أقل، فإن الطريقة البسيطة هي استخدام حلقة لرسم كل مقطع بلون فريد.

import numpy as np
import matplotlib.pyplot as plt

# Generate random colors
def uniqueish_color():
    return plt.cm.gist_ncar(np.random.random())

# Plot the line segments
xy = (np.random.random((10, 2)) - 0.5).cumsum(axis=0)
fig, ax = plt.subplots()
for start, stop in zip(xy[:-1], xy[1:]):
    x, y = zip(start, stop)
    ax.plot(x, y, color=uniqueish_color())
plt.show()

عدد كبير من مقاطع الخط

بالنسبة لعدد كبير من مقاطع الخط، يمكن أن يكون استخدام الحلقة بطيئًا. بدلاً من ذلك، قم بإنشاء كائن LineCollection.

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.collections import LineCollection

# Generate the line segments
xy = (np.random.random((1000, 2)) - 0.5).cumsum(axis=0)
xy = xy.reshape(-1, 1, 2)
segments = np.hstack([xy[:-1], xy[1:]])

# Create a LineCollection object
fig, ax = plt.subplots()
coll = LineCollection(segments, cmap=plt.cm.gist_ncar)

# Set the color array
coll.set_array(np.random.random(xy.shape[0]))

# Add the LineCollection to the axes
ax.add_collection(coll)
ax.autoscale_view()

# Display the plot
plt.show()

اختيار الألوان

بالنسبة لكلا الطريقتين، نستخدم خريطة الألوان "Gist_ncar" لإنشاء ألوان فريدة. ارجع إلى هذه الصفحة للتعرف على خيارات خريطة الألوان الأخرى: http://matplotlib.org/examples/color/colormaps_reference.html

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3