Масштабирование графов питонов по осям Y и X - PullRequest
1 голос
/ 15 марта 2019

У меня есть набор данных, и я сделал график, используя их.Проблема в том, что данные не выглядят масштабированными должным образом, поскольку ось Y находится в диапазоне от 0 до 30000, а ось X - от -2 до 30. Как я могу решить эту проблему?Спасибо

Вот мой код,

import numpy as np
import matplotlib.pyplot as plt

voltage365nm = [-1.877,-2.0,-1.5,-1.0,0.0,5.0,10.0,20.0,30.0] 
voltage405nm = [-1.437,-2.0,-1.5,-1.0,0.0,5.0,10.0,20.0,30.0] 
voltage546nm = [-0.768,-2.0,-1.5,-1.0,0.0,5.0,10.0,20.0,30.0] 

current365nm = [0.0,5.6,151.1,428,1164,5760,9870,1626,20700] 
current405nm = [0.0,-8.2,-2.6,70.2,278,1954,2460,3970,5021] 
current546nm = [0.0,-6.5,-6.1,-5.4,248,1435,2240,3250,3750] plt.plot(voltage365nm,current405nm,"r--",marker="s",label="$\lambda$=365 nm")
plt.plot(voltage405nm,current405nm,"b-.",marker="o",label="$\lambda$=405nm")
plt.plot(voltage546nm,current546nm,"g-",marker="^",label="$\lambda$=546nm")
plt.legend(loc='best')
plt.xlabel("Voltage (V)")
plt.ylabel("Current (I x $10^{-13}A}$)")
plt.title("Current vs Voltage")
plt.grid(b=True, which='major', color='g', linestyle='--')
plt.grid(b=True, which='minor', color='r', linestyle='--', alpha=0.2)
plt.show()                  

Ответы [ 3 ]

0 голосов
/ 15 марта 2019

Я запустил ваш код и получил следующую диаграмму:

enter image description here

Вы обеспокоены тем, что точки данных вдоль нижнего конца вашей оси y "урезаны"? Если это так, возможно, может помочь построение графика на оси журнала. Используйте метод set_yscale('log') следующим образом:

ax = plt.gca()
ax.set_yscale('log')

С этим я получаю следующую диаграмму:

enter image description here

Проблема с этим, конечно, заключается в том, что некоторые значения по оси Y являются отрицательными и, таким образом, не могут быть нанесены непосредственно на логарифмический масштаб. Полное решение будет включать добавление постоянной ко всем токам, чтобы они были положительными.

PS - Я думаю, что есть ошибка в одной из ваших plt.plot команд:

plt.plot(voltage365nm,current405nm,"r--",marker="s",label="$\lambda$=365 nm")

должно быть

plt.plot(voltage365nm, current365nm,"r--",marker="s",label="$\lambda$=365 nm")
0 голосов
/ 15 марта 2019

Я бы дополнительно поместил нижние значения во вставку в качестве увеличения

# your existing code before plt.show()

left, bottom, width, height = [0.32, 0.55, 0.4, 0.3]
ax2 = fig.add_axes([left, bottom, width, height])
ax2.plot(voltage365nm,current365nm,"r--",marker="s",label="$\lambda$=365 nm")
ax2.plot(voltage405nm,current405nm,"b-.",marker="o",label="$\lambda$=405nm")
ax2.plot(voltage546nm,current546nm,"g-",marker="^",label="$\lambda$=546nm")
ax2.set_xlim(-2.1, 1)
ax2.set_ylim(-100, 1500)
plt.grid(b=True, which='major', color='g', linestyle='--')
plt.show()

enter image description here

0 голосов
/ 15 марта 2019

Вы можете использовать plt.xlim([-10,0]) и plt.ylim([-10,0]), чтобы указать минимальное и максимальное значения ваших осей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...