Привет, люди.
Я хотел бы использовать pygal для построения изображения, как показано на рисунке выше:
Построение одной и той же серии с разными цвета на основе x_label. По сути, я хотел бы показать разницу между рабочими днями и выходными.
Однако кажется, что pygal разрешает настройки цвета только для серии.
То, что мне удалось сделать sh пока одно из следующего:
1 - рассматривать каждый день недели как свою собственную серию, со своим собственным цветом, без отображения x_lables.
код:
import pygal
from pygal.style import Style
y_values = [12.85, 12.78, 13.74, 16.73, 12.52, 3.71, 1.96]
x_labels = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
filename = 'barchar_test.png'
chart_config = {
"human_readable": True,
"pretty_print": True,
"truncate_legend": -1,
"value_font_size": 15,
"print_values": True,
"show_legend": False,
"print_values_position": "top",
"print_labels": True,
"value_formatter": lambda x: "{0: .2f}".format(x),
}
style_config = {
"font_family": "googlefont:lato",
"plot_background": "white",
"value_font_size": 15,
"show_y_guides": False,
"show_y_labels": False,
"colors": ("#0099d6", "#0099d6", "#0099d6", "#0099d6", "#0099d6", "#6d6f71", "#6d6f71"),
}
def _plot_bar_chart(y_values, x_labels, filename):
bar_chart = pygal.Bar(style=Style(**style_config), **chart_config)
for i, item in enumerate(y_values):
bar_chart.add(
x_labels[i], {item},
)
bar_chart.render_to_png(filename)
_plot_bar_chart(y_values, x_labels, filename)
2 - считать значения одной серией, отображая x_labels, но только одним цветом: код:
dimport pygal
from pygal.style import Style
y_values = [12.85, 12.78, 13.74, 16.73, 12.52, 3.71, 1.96]
x_labels = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
filename = 'barchar_test.png'
chart_config = {
"human_readable": True,
"pretty_print": True,
"truncate_legend": -1,
"value_font_size": 15,
"print_values": True,
"show_legend": False,
"print_values_position": "top",
"print_labels": True,
"value_formatter": lambda x: "{0: .2f}".format(x),
}
style_config = {
"font_family": "googlefont:lato",
"plot_background": "white",
"value_font_size": 15,
"show_y_guides": False,
"show_y_labels": False,
"colors": ("#0099d6", "#0099d6", "#0099d6", "#0099d6", "#0099d6", "#6d6f71", "#6d6f71"),
}
def _plot_bar_chart(y_values, x_labels, filename):
bar_chart = pygal.Bar(style=Style(**style_config), **chart_config)
bar_chart.x_labels = x_labels
bar_chart.add('', y_values)
bar_chart.render_to_png(filename)
_plot_bar_chart(y_values, x_labels, filename)
3- Рассмотрите значения как отдельные серии, покажите x_labels, но все столбцы должны быть сложены в первом x_label:
код:
import pygal
from pygal.style import Style
y_values = [12.85, 12.78, 13.74, 16.73, 12.52, 3.71, 1.96]
x_labels = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
filename = 'barchar_test.png'
chart_config = {
"human_readable": True,
"pretty_print": True,
"truncate_legend": -1,
"value_font_size": 15,
"print_values": True,
"show_legend": False,
"print_values_position": "top",
"print_labels": True,
"value_formatter": lambda x: "{0: .2f}".format(x),
}
style_config = {
"font_family": "googlefont:lato",
"plot_background": "white",
"value_font_size": 15,
"show_y_guides": False,
"show_y_labels": False,
"colors": ("#0099d6", "#0099d6", "#0099d6", "#0099d6", "#0099d6", "#6d6f71", "#6d6f71"),
}
def _plot_bar_chart(y_values, x_labels, filename):
bar_chart = pygal.Bar(style=Style(**style_config), **chart_config)
bar_chart.x_labels = x_labels
for i, item in enumerate(y_values):
bar_chart.add(
x_labels[i], {item},
)
bar_chart.render_to_png(filename)
_plot_bar_chart(y_values, x_labels, filename)
Любые мысли о это?
Спасибо:)