我正在尝试从CSV文件中绘制2列。仅使用'matplotlib'。我有4列,即duration
,day_of_week
,month
,user_type
。
我想在y轴上绘制持续时间,在x轴上绘制day_of_week
或月份。
def change_month(filename):
with open(data_file3, 'r') as f_in:
# set up csv reader object
reader = csv.DictReader(f_in)
data1 = []
data2 = []
data3 = []
for row in reader:
data1.append(str(row['day_of_week']))
data2.append(float(row['duration']))
return data1, data2
data1, data2 = change_month(data_file1)
plt.bar(data1, data2, 0.8)
plt.show()
这是我得到的图表,但y轴上的值太小。它们应至少在2k到10k的范围内
答案 0 :(得分:0)
我认为,看着你的情节,你会感到困惑,而日子不合适。原因是您使用 public class POAdapter extends RecyclerView.Adapter<POAdapter.MyViewHolder> {
private static final String TAG ="POAdapter" ;
private List<PODatamodel> poList;
public Context con;
private RecyclerView rv;
private int prevPos=0;
private FlipProgressDialog pd;
private String userId;
// OnDeleteCallback callback;
/* public interface OnDeleteCallback {
public void onPOItemDelete();
}*/
class MyViewHolder extends RecyclerView.ViewHolder {
TextView tvTitle, tvDate, tvPrice;
View mView;
ConstraintLayout mainSegment, btnSegmnet;
LinearLayout btnEdit, btnDel;
public MyViewHolder(View view) {
super(view);
tvTitle = (TextView) view.findViewById(R.id.itemNa);
tvPrice = (TextView) view.findViewById(R.id.itemPrice);
tvDate = (TextView) view.findViewById(R.id.itemDate);
mainSegment = (ConstraintLayout) view.findViewById(R.id.poMainSegment);
btnSegmnet = (ConstraintLayout) view.findViewById(R.id.poBtnSegment);
btnEdit = (LinearLayout) view.findViewById(R.id.btnEditPO);
btnDel = (LinearLayout) view.findViewById(R.id.btnDeletePO);
mView = view;
}
}
public POAdapter(List<PODatamodel> list, Context con) {
this.poList = list;
this.con = con;
}
public POAdapter(List<PODatamodel> list, RecyclerView rv, Context con ) {
this.poList = list;
this.con = con;
this.rv = rv;
SharedPreferences pref = con.getSharedPreferences(FAPI.SAVED_USER_DATA, MODE_PRIVATE);
userId = pref.getString(FAPI.USER_ID, "null");
pd = new FlipProgressDialog(con);
pd.setMessage("Loading data...");
pd.setCancelable(false);
pd.setImage(R.drawable.ic_flogo2);
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.po_item, parent, false);
return new MyViewHolder(itemView);
}
@Override
public void onBindViewHolder(final MyViewHolder holder, int position) {
final PODatamodel item = poList.get(position);
Log.d("onBindPos", " holderpos: " + holder.getAdapterPosition());
holder.tvTitle.setText(item.getTitle());
holder.tvPrice.setText(item.getPrice());
holder.tvDate.setText(item.getDate());
holder.mView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Toast.makeText(con, "Under Development", Toast.LENGTH_SHORT).show();
// showDialog(con);
if (holder.btnSegmnet.getVisibility() == View.VISIBLE) {
closePrevious(prevPos);
} else {
closePrevious(prevPos);
holder.mainSegment.setVisibility(View.GONE);
holder.btnSegmnet.setVisibility(View.VISIBLE);
prevPos = holder.getAdapterPosition();
}
// notifyItemChanged(holder.getAdapterPosition());
}
});
holder.btnEdit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Toast.makeText(con, "Under Development", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(con, BuyActivity.class);
intent.putExtra(FAPI.OPENING_MODE,FAPI.EDIT);
intent.putExtra(FAPI.PO_ID,item.getId());
con.startActivity(intent);
}
});
holder.btnDel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String pdId = item.getId();
Log.d("onDeleteClicked", "ID :" + pdId + " userId :" + userId);
pd.show();
deletePendingOrderItem(pdId, userId,holder.getAdapterPosition());
//Toast.makeText(con, "Under Development ", Toast.LENGTH_SHORT).show();
}
});
}
@Override
public int getItemCount() {
// Log.d(tag, menuItemDataList.size() + "");
return poList.size();
}
@Override
public int getItemViewType(int position)
{
return position;
}
public void deletePendingOrderItem(final String pdID, final String userID, final int pos) {
RequestQueue requestQueue = VolleySingleton.getInstance(getApplicationContext()).getRequestQueue();
VolleySingleton.getInstance(con).addToRequestQueue(
new StringRequest(Request.Method.DELETE, FAPI.DELETE_PENDING_ORDER_ITEM(pdID, userID), new Response.Listener<String>() {
@Override
public void onResponse(String response) {
System.out.println(response);
pd.dismiss();
extractDataForDelete(response,pos);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
pd.dismiss();
String msg = (error.getMessage() == null) ? " Something went wrong please try again" : error.getMessage();
Toast.makeText(con, msg, Toast.LENGTH_LONG).show();
Log.d("error", msg);
}
}) {
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> params = new HashMap<String, String>();
params.put("accept", "application/json");
params.put("Content-Type", "application/x-www-form-urlencoded");
return params;
}
/* @Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<>();
params.put("email", email);
params.put("password", pass);
System.out.println(Arrays.asList(params));
return params;
}*/
}
);
}
public void extractDataForDelete(String json,int pos) {
try {
JSONObject jsonObject = new JSONObject(json);
String code = jsonObject.getString(FAPI.PO_DELETE_STATUS);
if (code.equals(FAPI.DELETE_SUCCESS)) {
String msg = jsonObject.getString(FAPI.PO_MESSAGE);
Toast.makeText(con, msg, Toast.LENGTH_SHORT).show();
poList.remove(pos);
notifyDataSetChanged();
/* if (callback != null)
callback.onPOItemDelete();*/
}
} catch (JSONException e) {
e.printStackTrace();
}
}
public void closePrevious(int pos) {
try {
Log.d(TAG, "closePrevious: " + pos);
View mainSegment = rv.getLayoutManager().findViewByPosition(pos).findViewById(R.id.poMainSegment);
View btnSegment = rv.getLayoutManager().findViewByPosition(pos).findViewById(R.id.poBtnSegment);
btnSegment.setVisibility(View.GONE);
mainSegment.setVisibility(View.VISIBLE);
}catch (Exception e){e.printStackTrace();}
// Toast.makeText(con, v.getTag().toString(), Toast.LENGTH_SHORT).show();
}
}
读取了csv文件。字典不保留条目的顺序。如果要保留DictReader
的顺序,则需要将该文件作为列表读出。例如:
rows
希望对你有用。