コード例 #1
0
def test_hide_axis():
    """Test with hidden axis"""

    cs_1 = cartesius.CoordinateSystem(bounds=(-2.5, 2.5, -2.5, 2.5))
    cs_1.add(elements.Axis(horizontal=True, hide=True))
    cs_1.add(elements.Axis(vertical=True))
    cs_1.add(
        charts.Function(lambda x: x * math.sin(x * x),
                        start=-4,
                        end=5,
                        step=0.02,
                        color=(0, 0, 255)))

    cs_2 = cartesius.CoordinateSystem(bounds=(-2.5, 2.5, -2.5, 2.5))
    cs_2.add(elements.Axis(horizontal=True))
    cs_2.add(elements.Axis(vertical=True, hide=True))
    cs_2.add(
        charts.Function(lambda x: x * math.sin(x * x),
                        start=-4,
                        end=5,
                        step=0.02,
                        color=(0, 0, 255)))

    return cs_1.draw(150, 150), cs_2.draw(150, 150), cs_1.draw(
        150, 150, antialiasing=True), cs_2.draw(150, 150, antialiasing=True)
コード例 #2
0
def test_axis_custom_colors():
    """Axis with custom colors"""
    coordinate_system = cartesius.CoordinateSystem()

    coordinate_system.add(
        elements.Axis(horizontal=True,
                      color=(255, 0, 0),
                      labels=1,
                      points=0.25))
    coordinate_system.add(
        elements.Axis(vertical=True, color=(0, 255, 0), labels=2, points=1))

    f = lambda x: x * math.sin(x * x)
    coordinate_system.add(
        charts.Function(f, start=-4, end=5, step=0.02, color=(0, 0, 255)))

    return coordinate_system.draw(300, 200), coordinate_system.draw(
        300, 200, antialiasing=True)
コード例 #3
0
def test_axis_with_custom_labels():
    """Axis with custom label positions and decorations:"""
    coordinate_system = cartesius.CoordinateSystem()

    coordinate_system.add(elements.Axis(horizontal=True, labels=1,
                                        points=0.25))
    coordinate_system.add(
        elements.Axis(vertical=True,
                      labels=2,
                      labels_decorator=lambda x: 'speed=%sm/s' % x,
                      points=1))

    f = lambda x: math.sin(x) * 2
    coordinate_system.add(
        charts.Function(f, start=-4, end=5, step=0.02, color=(0, 0, 255)))

    return coordinate_system.draw(300, 200), coordinate_system.draw(
        300, 200, antialiasing=True)
コード例 #4
0
def test_piechart_2():
    """ PieChart with custom colors """
    coordinate_system = cartesius.CoordinateSystem()

    piechart_data = (
        charts.data('abc', 1, fill_color=(255, 200, 200)),
        charts.data('cde', 2, fill_color=(200, 255, 200)),
        charts.data('efg', 5, fill_color=(200, 200, 255)),
        charts.data('ijk', 3, fill_color=(255, 255, 255)),
    )
    piechart = charts.PieChart(data=piechart_data, color=(0, 0, 0))

    coordinate_system.add(piechart)

    # No need for axes:
    coordinate_system.add(elements.Axis(horizontal=True, hide=True))
    coordinate_system.add(elements.Axis(vertical=True, hide=True))

    return coordinate_system.draw(300, 200), coordinate_system.draw(
        300, 200, antialiasing=True),
コード例 #5
0
def test_axis_with_custom_labels_2():
    """Axis with custom labels II"""
    coordinate_system = cartesius.CoordinateSystem(bounds=(-1500, 1500, -1500,
                                                           1500))

    # Labels with suffixes 'm':
    coordinate_system.add(
        elements.Axis(horizontal=True, labels='500m', points=100))

    # Custom labels on custom positions:
    coordinate_system.add(
        elements.Axis(vertical=True,
                      labels={
                          1000: 'one km',
                          500: 'half km'
                      },
                      points=100))

    return coordinate_system.draw(300, 200), coordinate_system.draw(
        300, 200, antialiasing=True)
コード例 #6
0
def test_piechart_1():
    """ PieChart with default colors """
    coordinate_system = cartesius.CoordinateSystem()

    # list or tuple of two-element tuples (value, label):
    piechart_data = (
        charts.data('abc', 1),
        charts.data('cde', 2),
        charts.data('efg', 4),
        charts.data('ijk', 1),
        charts.data('lmn', 5),
        charts.data('opq', 5),
        charts.data('xyz', 3),
    )
    piechart = charts.PieChart(data=piechart_data, color=(0, 0, 0))
    coordinate_system.add(piechart)

    # No need for axes:
    coordinate_system.add(elements.Axis(horizontal=True, hide=True))
    coordinate_system.add(elements.Axis(vertical=True, hide=True))

    return coordinate_system.draw(300, 200), coordinate_system.draw(
        300, 200, antialiasing=True),
コード例 #7
0
def test_hide_axis_positive_or_negative_parts():
    """Hide positive and/or negative parts of axes"""
    cs_1 = cartesius.CoordinateSystem(bounds=(-2.5, 2.5, -2.5, 2.5))
    cs_1.add(
        charts.Function(lambda x: x * math.sin(x * x),
                        start=-4,
                        end=5,
                        step=0.02,
                        color=(0, 0, 255)))
    cs_1.add(elements.Axis(horizontal=True, hide_positive=True))
    cs_1.add(elements.Axis(vertical=True, hide_positive=True))

    cs_2 = cartesius.CoordinateSystem(bounds=(-2.5, 2.5, -2.5, 2.5))
    cs_2.add(
        charts.Function(lambda x: x * math.sin(x * x),
                        start=-4,
                        end=5,
                        step=0.02,
                        color=(0, 0, 255)))
    cs_2.add(elements.Axis(horizontal=True, hide_negative=True))
    cs_2.add(elements.Axis(vertical=True, hide_negative=True))

    return cs_1.draw(150, 150), cs_2.draw(150, 150), cs_1.draw(
        150, 150, antialiasing=True), cs_2.draw(150, 150, antialiasing=True)
コード例 #8
0
def test_detached_axes():
    """ Detached axes"""
    coordinate_system = cartesius.CoordinateSystem(bounds=(-10, 10, -10, 10))

    coordinate_system.add(
        charts.Function(lambda x: x * math.sin(x * x),
                        start=-4,
                        end=5,
                        step=0.02,
                        color=(0, 0, 255)))

    # Standard axes:
    coordinate_system.add(elements.Axis(horizontal=True, points=2))
    coordinate_system.add(elements.Axis(vertical=True, labels=2))

    # You can have only one horizontal and one vertical standard axis and, if you add
    # more -- the newer will overwrite the older.

    # But, you can make as many as you want *detached axes*. These are just like normal
    # ones, but their center is not (0,0).

    # Detached:
    detached_axes_center = (-5, 4)

    coordinate_system.add(
        elements.Axis(horizontal=True,
                      points=2,
                      labels=2,
                      detached_center=detached_axes_center,
                      color=(255, 0, 0)))
    coordinate_system.add(
        elements.Axis(vertical=True,
                      points=2,
                      labels=2,
                      detached_center=detached_axes_center,
                      color=(0, 0, 255)))

    # Another pair of detached axes with hidden negative/positive halfs:
    detached_axes_center = (4, -5)
    coordinate_system.add(
        elements.Axis(horizontal=True,
                      points=2,
                      labels=2,
                      detached_center=detached_axes_center,
                      hide_negative=True))
    coordinate_system.add(
        elements.Axis(vertical=True,
                      points=2,
                      labels=2,
                      detached_center=detached_axes_center,
                      hide_positive=True))

    return coordinate_system.draw(300, 200), coordinate_system.draw(
        300, 200, antialiasing=True)
コード例 #9
0
def test_labels_positions():
    """Labels on different positions"""
    cs_1 = cartesius.CoordinateSystem(bounds=(-2.5, 2.5, -2.5, 2.5))
    cs_1.add(
        elements.Axis(
            horizontal=True,
            points=1,
            labels=1,
            label_position=cartesius.LEFT_UP,
        ))
    cs_1.add(
        elements.Axis(
            vertical=True,
            points=1,
            labels=1,
            label_position=cartesius.LEFT_CENTER,
        ))

    cs_2 = cartesius.CoordinateSystem(bounds=(-2.5, 2.5, -2.5, 2.5))
    cs_2.add(
        elements.Axis(
            horizontal=True,
            points=1,
            labels=1,
            label_position=cartesius.LEFT_DOWN,
        ))
    cs_2.add(
        elements.Axis(
            vertical=True,
            points=1,
            labels=1,
            label_position=cartesius.CENTER_UP,
        ))

    cs_3 = cartesius.CoordinateSystem(bounds=(-2.5, 2.5, -2.5, 2.5))
    cs_3.add(
        elements.Axis(
            horizontal=True,
            points=1,
            labels=1,
            label_position=cartesius.CENTER,
        ))
    cs_3.add(
        elements.Axis(
            vertical=True,
            points=1,
            labels=1,
            label_position=cartesius.CENTER_DOWN,
        ))

    cs_4 = cartesius.CoordinateSystem(bounds=(-2.5, 2.5, -2.5, 2.5))
    cs_4.add(
        elements.Axis(
            horizontal=True,
            points=1,
            labels=1,
            label_position=cartesius.RIGHT_UP,
        ))
    cs_4.add(
        elements.Axis(
            vertical=True,
            points=1,
            labels=1,
            label_position=cartesius.RIGHT_CENTER,
        ))

    cs_5 = cartesius.CoordinateSystem(bounds=(-2.5, 2.5, -2.5, 2.5))
    cs_5.add(
        elements.Axis(
            horizontal=True,
            points=1,
            labels=1,
            label_position=cartesius.RIGHT_DOWN,
        ))
    cs_5.add(
        elements.Axis(
            vertical=True,
            points=1,
            labels=1,
            label_position=cartesius.RIGHT_DOWN,
        ))

    return cs_1.draw(150, 150), cs_2.draw(150,
                                          150), cs_3.draw(150, 150), cs_4.draw(
                                              150, 150), cs_5.draw(150, 150)
コード例 #10
0
t = time()
f = lambda x: y[int(x)]


def data_generator():
    for x in range(int(5 / 0.02)):
        key = x
        value = f(x)
        color = (0, 0, 255)
        yield charts.data(key, value, color=color)


coordinate_system = cartesius.CoordinateSystem(bounds=(
    -5, len(y), 0,
    5))  #left=bounds[0], right=bounds[1], bottom=bounds[2], top=bounds[3]
coordinate_system.add(elements.Axis(vertical=True, labels=1, points=1))
#coordinate_system.add(elements.Grid(0.5, None, color=(100, 100, 100)))

coordinate_system.add(elements.Grid(1, None, color=(200, 200, 200)))

#coordinate_system.add(charts.Function(f, start=0, end=len(y), step=1, color=(0, 0, 255)))
coordinate_system.add(charts.LineChart(data=data_generator))
print('crt', time() - t)
img1 = coordinate_system.draw(w, h // 2, antialiasing=True)
#img2 = coordinate_system.draw(w, h//2, antialiasing=True)
img2 = img1
print('drw', time() - t)
new_im = Image.new('RGBA', (w, h))
new_im.paste(img1, (0, 0))
new_im.paste(img2, (0, h // 2))
print('pst', time() - t)
コード例 #11
0
def sample_gpx():
    return mod_gpxpy.parse(open('sample_files/setnjica-kod-karojbe.gpx'))


coordinate_system = mod_cartesius.CoordinateSystem(bounds=(-300, 6800, -40,
                                                           480))

coordinate_system.add(mod_elements.Grid(20, 100))

gpx = sample_gpx()
coordinate_system.add(get_line(gpx, color=(0, 0, 0)))

data = mod_srtm.get_data()

gpx = sample_gpx()
data.add_elevations(gpx)
coordinate_system.add(get_line(gpx, color=(0, 0, 255), transparency_mask=150))

gpx = sample_gpx()
data.add_elevations(gpx, smooth=True)
coordinate_system.add(get_line(gpx, color=(255, 0, 0)))

coordinate_system.add(
    mod_elements.Axis(horizontal=True, labels=500, points=100))
coordinate_system.add(mod_elements.Axis(vertical=True, labels=100, points=20))

image = coordinate_system.draw(600, 400, antialiasing=True)
#image.show()

image.save('gpx_elevations.png')