垃圾箱绘制直方图的作用是什么?

时间:2019-02-18 14:20:20

标签: python matplotlib histogram

我想绘制直方图。当我使用bins=80auto进行绘制时,我的代码可以正常工作。但是,当我尝试使用bins=100对其进行绘制时。给我这个错误是行不通的:

"{!r} is not a valid estimator for `bins`".format(bin_name))
ValueError: '100' is not a valid estimator for `bins`

这是我的代码:

import matplotlib.pyplot as plt
x= [81.70900202536467, 81.69066539803865, 81.9634647036723, 81.6886583191991, 81.70063595809025, 81.71279936786232, 81.6846428541525]
plt.hist(x,bins='100')
plt.hist(x)
plt.show()

带直方图的垃圾箱的作用是什么?如何为我的数据选择合适的bin值?

2 个答案:

答案 0 :(得分:3)

设置package ordermanagementsystem.viewcomponents; import java.io.IOException; import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; import javafx.scene.control.Label; import javafx.scene.control.TextField; import javafx.scene.layout.AnchorPane; import ordermanagementsystem.DialogBox; import ordermanagementsystem.cart.CartState; import ordermanagementsystem.orders.models.OrderItem; public class CartItemComponent extends AnchorPane { @FXML private AnchorPane frame; @FXML private TextField quantity; @FXML private Label total; @FXML private Label productName; private OrderItem item; private CartState cartState; public CartItemComponent(OrderItem item) { FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/ordermanagementsystem/views/components/CartItemComponent.fxml")); fxmlLoader.setRoot(this); fxmlLoader.setController(this); try { fxmlLoader.load(); } catch (IOException exception) { exception.getStackTrace(); } this.cartState = CartState.getInstance(); this.item = item; this.setQuantity(1); this.quantity.setEditable(false); this.productName.setText(this.item.getProduct().getName()); } private void setQuantity(int quantity) { this.quantity.setText(String.valueOf(quantity)); this.item.setQuantity(quantity); this.cartState.updateItem(this.item); this.total.setText("RM" + String.format("%.2f", item.getProduct().getPrice() * quantity)); } private int getQuantity() { return Integer.parseInt(this.quantity.getText()); } private void updateSummary() { } @FXML private void add(ActionEvent event) { int quantity = this.getQuantity(); if (quantity == 99) { DialogBox.showValidationDialog("The quantity cannot be over 99."); } else { this.setQuantity(quantity + 1); } } @FXML private void substract(ActionEvent event) { int quantity = this.getQuantity(); if (quantity == 1) { DialogBox.showValidationDialog("The quantity cannot be below 1."); } else { this.setQuantity(quantity - 1); } } } ,其中值是整数,而不是字符串。垃圾箱是您的数据将被分类为多少组。在您的示例中,您只有7个元素,因此将它们分组为100个bin毫无意义。但是,如果这只是您的数据的一小段,那么您应该一切顺利!

bins=100

答案 1 :(得分:2)

Bins是数据将要汇总的组数。例如,如果您有数字1,1,2,3,5,6,6,并且想要3个bin,则在直方图中会得到三列(binds):

Column 1: [1,1,2] <=2 (value 3)
Column 2: 2<[3]<=3 (value 1)
Column 3: 3<[5,6,6]<=6 (value 3)

在bins参数中使用字符串时,该函数需要以下值之一:“ auto”,“ sturges”,“ fd”,“ doane”,“ scott”,“ rice”,“ sturges”或“ sqrt” 。如果您想要100个垃圾箱,则应该提供一个整数。

您可以参考Wikipedia来了解有关直方图分类的更多信息,也可以参考matplotlib docs来了解有关直方图功能的信息。