如何使用最小比例 python pygal
How to use min scale python pygal
所以我想要我的 pygal 图中的 y 轴变量之间的整数间隔。这是我的代码:
graph = pygal.Line(min_scale=1,x_label_rotation=35, truncate_label=-1, no_data_text="", style=custom_style, width=1000, height=400, explicit_size=True)
x_labels = []
data = []
for i in range(1,len(User.query.all())+1):
data.append(i)
x_labels.append(User.query.filter_by(id=i).first().date_created)
graph.x_labels = x_labels
graph.add("Count", data)
没关系 User.query 自 .date_created returns 日期时间以来的东西。
不管怎样这个图returns这个
我希望 y 间隔先是 1,然后是 2,所以我不需要任何小数
您可以通过设置图表对象的 y_labels
属性来指定 y 刻度的位置。
例如:
graph = pygal.Line(min_scale=1, width=400, height=300)
graph.add("Count", [1, 1.5, 2])
graph.x_labels = ["A", "B", "C"]
graph.y_labels = [1, 2]
生成以下图表:
请参阅 docs 查看各种选项。
Pygal 似乎不支持这个。我给了它整数值,但它会在 1 和 2 之间画出十几条水平线和小数值。设置 min_scale
、max_scale
或 order_min
(所有选项似乎远程相关)不要帮不上忙唯一的解决方案是使用 mostlyoxygen 回答的内容:明确指定哪些值应出现在轴上。不过,我想出了一个不错的片段,可以很容易地创建该列表:
chart.y_labels = list(range(max_y_value + 1))
- 它需要 +1 因为范围是独占的(
range(3)
生成 [0,1,2]
)。
- 注意 max_y_value 必须是
int
类型,例如即使 round()
的结果是一个浮点数,并且在传递给 range 函数时会抛出错误。如果适用,您可以使用 int(max_y_value)
,尽管在您可能想要四舍五入时会丢弃任何小数(有效地向下舍入)。
- 如果您不希望图表从零开始(但请注意,您可能会以这种方式制作误导性图表,因为即使值相当稳定也会夸大差异),您可以传递第一个值到最大值之前的
range
函数。
所以我想要我的 pygal 图中的 y 轴变量之间的整数间隔。这是我的代码:
graph = pygal.Line(min_scale=1,x_label_rotation=35, truncate_label=-1, no_data_text="", style=custom_style, width=1000, height=400, explicit_size=True)
x_labels = []
data = []
for i in range(1,len(User.query.all())+1):
data.append(i)
x_labels.append(User.query.filter_by(id=i).first().date_created)
graph.x_labels = x_labels
graph.add("Count", data)
没关系 User.query 自 .date_created returns 日期时间以来的东西。
不管怎样这个图returns这个
我希望 y 间隔先是 1,然后是 2,所以我不需要任何小数
您可以通过设置图表对象的 y_labels
属性来指定 y 刻度的位置。
例如:
graph = pygal.Line(min_scale=1, width=400, height=300)
graph.add("Count", [1, 1.5, 2])
graph.x_labels = ["A", "B", "C"]
graph.y_labels = [1, 2]
生成以下图表:
请参阅 docs 查看各种选项。
Pygal 似乎不支持这个。我给了它整数值,但它会在 1 和 2 之间画出十几条水平线和小数值。设置 min_scale
、max_scale
或 order_min
(所有选项似乎远程相关)不要帮不上忙唯一的解决方案是使用 mostlyoxygen 回答的内容:明确指定哪些值应出现在轴上。不过,我想出了一个不错的片段,可以很容易地创建该列表:
chart.y_labels = list(range(max_y_value + 1))
- 它需要 +1 因为范围是独占的(
range(3)
生成[0,1,2]
)。 - 注意 max_y_value 必须是
int
类型,例如即使round()
的结果是一个浮点数,并且在传递给 range 函数时会抛出错误。如果适用,您可以使用int(max_y_value)
,尽管在您可能想要四舍五入时会丢弃任何小数(有效地向下舍入)。 - 如果您不希望图表从零开始(但请注意,您可能会以这种方式制作误导性图表,因为即使值相当稳定也会夸大差异),您可以传递第一个值到最大值之前的
range
函数。