Я действительно борется, чтобы понять, как построить участки для бара.Chaco bar plot
Я вчитывался онлайн пример и сократили его до следующего упрощенного кода:
import numpy as np
from traits.api import HasTraits, Instance
from traitsui.api import View, Item
from chaco.api import BarPlot, ArrayDataSource, DataRange1D, LinearMapper
from enable.api import ComponentEditor
class MyBarPlot(HasTraits):
plot = Instance(BarPlot)
traits_view = View(
Item('plot',editor=ComponentEditor(), show_label=False))
def _plot_default(self):
idx = np.array([1, 2, 3, 4, 5])
vals = np.array([2, 4, 7, 4, 3])
index = ArrayDataSource(idx)
index_range = DataRange1D(index, low=0.5, high=5.5)
index_mapper = LinearMapper(range=index_range)
value = ArrayDataSource(vals)
value_range = DataRange1D(value, low=0)
value_mapper = LinearMapper(range=value_range)
plot = BarPlot(index=index, value=value,
value_mapper=value_mapper,
index_mapper=index_mapper)
return plot
if __name__ == "__main__":
myplot = MyBarPlot()
myplot.configure_traits()
Само собой разумеется, моя попытка не работает. Когда я запускаю этот код (в записной книжке ipython), все, что я получаю, это пустое окно графика, заполненное черным.
Я подозреваю, что моя ошибка может иметь какое-то отношение к записям «valuemapper», поскольку я не совсем понимаю, для чего они нужны. Я был бы благодарен за любые указатели на мою ошибку кода.
В целом, этот подход кодирования кажется мне очень сложным - есть ли более простой способ сделать графики на чако?
Большое спасибо за ответ tsyu80. Да, вы были правы, установив соответствующее значение для bar_width, чтобы полосы сюжетов были различимы друг от друга, вместо того, чтобы все они были заблокированы одним большим жирным баром (вот почему мой сюжет был черным). Спасибо также за примеры. Второй вариант с удобством использования графика, казалось, предлагал «самое простое» решение, хотя оно все еще кажется ужасно сложным по сравнению с гистограммой matplotlib. – dreme
Chaco определенно более подробен, если ваша цель - просто создать статический сюжет. Тем не менее, Chaco больше ориентируется на включение графиков в приложения. Если вы создаете приложение с интерактивными сюжетами, вы, вероятно, найдете Chaco проще, чем matplotlib. –
Да, хорошая точка. Поскольку я начинаю понимать всю парадигму признаков/ui/chaco, мне это очень нравится. – dreme