matplotlib nhận giá trị ylim


115

Tôi đang sử dụng matplotlibđể vẽ dữ liệu (sử dụng plotvà các errorbarchức năng) từ Python. Tôi phải vẽ một tập hợp các ô hoàn toàn riêng biệt và độc lập, sau đó điều chỉnh ylimgiá trị của chúng để có thể dễ dàng so sánh trực quan.

Làm cách nào tôi có thể truy xuất các ylimgiá trị từ mỗi ô để tôi có thể lấy giá trị tối thiểu và tối đa của các giá trị ylim thấp hơn và trên tương ứng và điều chỉnh các ô để chúng có thể được so sánh trực quan?

Tất nhiên, tôi chỉ có thể phân tích dữ liệu và đưa ra các ylimgiá trị tùy chỉnh của riêng mình ... nhưng tôi muốn sử dụng matplotlibđể làm điều đó cho mình. Bất kỳ đề xuất nào về cách dễ dàng (và hiệu quả) làm điều này?

Đây là hàm Python của tôi có âm mưu sử dụng matplotlib:

import matplotlib.pyplot as plt

def myplotfunction(title, values, errors, plot_file_name):

    # plot errorbars
    indices = range(0, len(values))
    fig = plt.figure()
    plt.errorbar(tuple(indices), tuple(values), tuple(errors), marker='.')

    # axes
    axes = plt.gca()
    axes.set_xlim([-0.5, len(values) - 0.5])
    axes.set_xlabel('My x-axis title')
    axes.set_ylabel('My y-axis title')

    # title
    plt.title(title)

    # save as file
    plt.savefig(plot_file_name)

    # close figure
    plt.close(fig)

Câu trả lời:


159

Chỉ cần sử dụng axes.get_ylim(), nó rất giống với set_ylim. Từ các tài liệu :

get_ylim ()

Nhận phạm vi trục y [dưới cùng, trên cùng]


2
có cách nào để có được giới hạn diện tích đồ thị, thay vì giới hạn trục không? Hình chữ nhật bao quanh màu đen nằm ngoài các giá trị này một chút.
Peter Ehrlich

@PeterEhrlich Đó chỉ là phần bên lề.
ilija139

12
Tôi thấy plt.gca().get_ylim()nó rất tiện dụng - không cần định nghĩa thêm trục.
Matthias Arras

Ngoài ra, tôi thích sử dụng fig, ax = plt.subplots()và sau đó định tuyến tất cả các chức năng của mình thông qua fighoặcax
BallpointBen

34
 ymin, ymax = axes.get_ylim()

Nếu bạn đang sử dụng plttrực tiếp api, bạn có thể tránh hoàn toàn các lệnh gọi đến các trục:

def myplotfunction(title, values, errors, plot_file_name):

    # plot errorbars
    indices = range(0, len(values))
    fig = plt.figure()
    plt.errorbar(tuple(indices), tuple(values), tuple(errors), marker='.')

    plt.xlim([-0.5, len(values) - 0.5])
    plt.xlabel('My x-axis title')
    plt.ylabel('My y-axis title')

    # title
    plt.title(title)

    # save as file
    plt.savefig(plot_file_name)

   # close figure
    plt.close(fig)

10

Tận dụng những câu trả lời hay ở trên và giả sử bạn chỉ sử dụng plt như trong

import matplotlib.pyplot as plt

thì bạn có thể nhận được tất cả bốn giới hạn ô bằng cách sử dụng plt.axis()như trong ví dụ sau.

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5, 6, 7, 8]  # fake data
y = [1, 2, 3, 4, 3, 2, 5, 6]

plt.plot(x, y, 'k')

xmin, xmax, ymin, ymax = plt.axis()

s = 'xmin = ' + str(round(xmin, 2)) + ', ' + \
    'xmax = ' + str(xmax) + '\n' + \
    'ymin = ' + str(ymin) + ', ' + \
    'ymax = ' + str(ymax) + ' '

plt.annotate(s, (1, 5))

plt.show()

Đoạn mã trên sẽ tạo ra âm mưu đầu ra sau. nhập mô tả hình ảnh ở đây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.