我想绘制直方图。当我使用bins=80
或auto
进行绘制时,我的代码可以正常工作。但是,当我尝试使用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值?
答案 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来了解有关直方图功能的信息。