stat_summary仅限特定行

时间:2016-10-18 08:37:14

标签: r ggplot2

我可以在数据框中仅绘制特定行的平均值吗?

让我们说,hp cyl == 6 mtcars数据集的所有汽车的平均值ggplot(mtcars, aes(carb, hp)) + stat_summary(fun.y = mean, geom = "line") 。我知道如何绘制所有人的平均值:

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Window;
import android.widget.Toast;

import com.android.volley.Request.Method;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.shyamdev.animewallpaperhd.app.AppConst;
import com.shyamdev.animewallpaperhd.app.AppController;
import com.shyamdev.animewallpaperhd.picasa.model.Category;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.List;

public class SplashActivity extends Activity {
private static final String TAG = SplashActivity.class.getSimpleName();
private static final String TAG_FEED = "feed", TAG_ENTRY = "entry",
        TAG_GPHOTO_ID = "gphoto$id", TAG_T = "$t",
        TAG_ALBUM_TITLE = "title";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
    getActionBar().hide();
    setContentView(R.layout.activity_splash);

    // Picasa request to get list of albums
    String url = AppConst.URL_FLICKR_ALBUMS
            .replace("_PICASA_USER_", AppController.getInstance()
                    .getPrefManger().getGoogleUserName());

    Log.d(TAG, "Albums request url: " + url);

    // Preparing volley's json object request
    JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.GET, url,
             new Response.Listener<JSONObject>() {

        @Override
        public void onResponse(JSONObject response) {
            Log.d(TAG, "Albums Response: " + response.toString());
            List<Category> albums = new ArrayList<Category>();
            try {
                // Parsing the json response
                JSONArray entry = response.getJSONObject(TAG_FEED)
                        .getJSONArray(TAG_ENTRY);

                // loop through albums nodes and add them to album
                // list
                for (int i = 0; i < entry.length(); i++) {
                    JSONObject albumObj = (JSONObject) entry.get(i);
                    // album id
                    String albumId = albumObj.getJSONObject(
                            TAG_GPHOTO_ID).getString(TAG_T);

                    // album title
                    String albumTitle = albumObj.getJSONObject(
                            TAG_ALBUM_TITLE).getString(TAG_T);

                    Category album = new Category();
                    album.setId(albumId);
                    album.setTitle(albumTitle);

                    // add album to list
                    albums.add(album);

                    Log.d(TAG, "Album Id: " + albumId
                            + ", Album Title: " + albumTitle);
                }

                // Store albums in shared pref
                AppController.getInstance().getPrefManger()
                        .storeCategories(albums);

                // String the main activity
                Intent intent = new Intent(getApplicationContext(),
                        MainActivity.class);
                startActivity(intent);
                // closing spalsh activity
                finish();

            } catch (JSONException e) {
                e.printStackTrace();
                Toast.makeText(getApplicationContext(),
                        getString(R.string.msg_unknown_error),
                        Toast.LENGTH_LONG).show();
            }

        }
    }, new Response.ErrorListener() {

        @Override
        public void onErrorResponse(VolleyError error) {
            Log.e(TAG, "Volley Error: " + error.getMessage());

            // show error toast
            Toast.makeText(getApplicationContext(),
                    getString(R.string.splash_error),
                    Toast.LENGTH_LONG).show();

            // Unable to fetch albums
            // check for existing Albums data in Shared Preferences
            if (AppController.getInstance().getPrefManger()
                    .getCategories() != null && AppController.getInstance().getPrefManger()
                    .getCategories().size() > 0) {
                // String the main activity
                Intent intent = new Intent(getApplicationContext(),
                        MainActivity.class);
                startActivity(intent);
                // closing spalsh activity
                finish();
            } else {
                // Albums data not present in the shared preferences
                // Launch settings activity, so that user can modify
                // the settings

                // Intent i = new Intent(SplashActivity.this,
                //SettingsActivity.class);
                // clear all the activities
                // i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
                // | Intent.FLAG_ACTIVITY_CLEAR_TASK);
                //startActivity(i);
            }

        }

    });

    // disable the cache for this request, so that it always fetches updated
    // json
    jsonObjReq.setShouldCache(false);

    // Making the request
    AppController.getInstance().addToRequestQueue(jsonObjReq);

}

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以在ggplot来电中添加子集条件:

ggplot(mtcars[ mtcars$cyl == 6, ], aes(carb, hp)) +
    stat_summary(fun.y = mean, geom = "line")