Альтернатива ответу Джулио Гирардо, который разделяет линии в сегментах, вы можете использовать встроенную функцию разворота matplotlib, которые строят линию, используя круги:
from matplotlib import pyplot as plt
import numpy as np
x = np.linspace(0,10,10000)
y = 2 - 0.5*np.abs(x-4)
lwidths = (1+x)**2 # scatter 'o' marker size is specified by area not radius
plt.scatter(x,y, s=lwidths, color='blue')
plt.xlim(0,9)
plt.ylim(0,2.1)
plt.show()
По моему опыту я нашел два проблемы с делением линии на сегменты:
Вы неправильно используете объект Promise
, возвращенный из getCategory()
в вашем экспресс-маршрутизаторе:
app.get('/', (req, res) => {
var categories = configDB.getCategory(); <-- this is a Promise, not a synchronous value
res.render('home', categories);
});
Вместо этого вы можете использовать async/await
, чтобы помочь устранить разрыв между вашим текущим синхронным кодом и у вас есть асинхронный интерфейс базы данных Promise
:
app.get('/', async (req, res) => {
var categories = await configDB.getCategory();
res.render('home', categories);
});
Вдохновленный ответом @jakemingolla, предложившего async-await, я начал использовать callback для возврата объекта 'Categories', и все работало отлично.
функция в моем файле dbconfig.js
const getCategoryList = (callback) => {
CategoryRef.find().then((categories) => {
callback(categories);
})
}
, вызывающая функцию в моем файле app.js
app.get('/', (req, res) => {
database.getCategoryHomeList((categories) => {
res.render('home', {categories: categories});
})
});