小编Sim*_*mon的帖子

反向堆叠条形顺序

我正在使用ggplot创建一个堆积条形图,如下所示:

plot_df <- df[!is.na(df$levels), ] 
ggplot(plot_df, aes(group)) + geom_bar(aes(fill = levels), position = "fill")
Run Code Online (Sandbox Code Playgroud)

这给了我这样的东西:

在此输入图像描述

如何反转堆叠条本身的顺序,以便第1级位于底部,第5级位于每个条形的顶部?

我已经看到了很多关于这方面的问题(例如,如何使用ggplot2上的标识来控制堆积条形图的排序),并且常见的解决方案似乎是按照该级别对数据帧重新排序,因为ggplot正在使用确定顺序

所以我尝试使用dplyr进行重新排序:

plot_df <- df[!is.na(df$levels), ] %>% arrange(desc(levels))

然而,情节也是如此.不论我是按升序还是按降序排列,似乎也没有区别

这是一个可重复的例子:

group <- c(1,2,3,4, 1,2,3,4, 1,2,3,4, 1,2,3,4, 1,2,3,4, 1,2,3,4)
levels <- c("1","1","1","1","2","2","2","2","3","3","3","3","4","4","4","4","5","5","5","5","1","1","1","1")
plot_df <- data.frame(group, levels)

ggplot(plot_df, aes(group)) + geom_bar(aes(fill = levels), position = "fill")
Run Code Online (Sandbox Code Playgroud)

r bar-chart ggplot2 stacked-chart dplyr

25
推荐指数
1
解决办法
2万
查看次数

熊猫 - 替换列值

我知道这个问题有很多主题,但没有一种方法适合我,所以我发布了我的具体情况

我有一个如下所示的数据框:

data = pd.DataFrame([[1,0],[0,1],[1,0],[0,1]], columns=["sex", "split"])
data['sex'].replace(0, 'Female')
data['sex'].replace(1, 'Male')
data
Run Code Online (Sandbox Code Playgroud)

我想要做的是将性别列中的所有0替换为"女性",将所有1替换为"男性",但是当我使用上面的代码时,数据框中的值似乎没有改变

我是否错误地使用了replace()?或者有更好的方法来有条件地替换价值观吗?

python pandas

19
推荐指数
2
解决办法
7万
查看次数

Matplotlib返回一个绘图对象

我有一个包装的函数,pyplot.plt所以我可以使用经常使用的默认值快速创建图形:

def plot_signal(time, signal, title='', xlab='', ylab='',
                line_width=1, alpha=1, color='k',
                subplots=False, show_grid=True, fig_size=(10, 5)):

    # Skipping a lot of other complexity here

    f, axarr = plt.subplots(figsize=fig_size)
    axarr.plot(time, signal, linewidth=line_width,
               alpha=alpha, color=color)
    axarr.set_xlim(min(time), max(time))
    axarr.set_xlabel(xlab)
    axarr.set_ylabel(ylab)
    axarr.grid(show_grid)

    plt.suptitle(title, size=16)
    plt.show()
Run Code Online (Sandbox Code Playgroud)

但是,有时候我希望能够返回绘图,以便我可以手动添加/编辑特定图形的内容.例如,我希望能够更改轴标签,或者在调用函数后向绘图添加第二行:

import numpy as np

x = np.random.rand(100)
y = np.random.rand(100)

plot = plot_signal(np.arange(len(x)), x)

plot.plt(y, 'r')
plot.show()
Run Code Online (Sandbox Code Playgroud)

我已经看到了几个问题(如何从Pandas绘图函数返回matplotlib.figure.Figure对象?AttributeError:'图'对象没有属性'plot')因此我尝试添加以下内容到功能结束:

  • return axarr

  • return axarr.get_figure()

  • return plt.axes()

但是,它们都返回了类似的错误: AttributeError: 'AxesSubplot' object has no attribute 'plt'

什么是返回绘图对象的正确方法,以便以后编辑?

python plot matplotlib

15
推荐指数
3
解决办法
2万
查看次数

mongodb nodejs - 转换循环结构

我有一些代码可以从集合中提取所有文档并将其放到网页上.简化版本如下所示:

var mongodb = require("mongodb"),
    express = require("express"),
    mongoServer = new mongodb.Server('localhost', 27017),
    dbConnector = new mongodb.Db('systemMonitor', mongoServer),
    db;

var app = new express();

app.get('/drives', function(req, res) {
  db.collection('driveInfo', function(err, collection) {
    if (err) throw err;
    collection.find({}, function(err, documents) {
      res.send(documents);
    });
  });
});

dbConnector.open(function(err, opendb) {
  if (err) throw err;
  db = opendb;
  app.listen(80);
});
Run Code Online (Sandbox Code Playgroud)

我有一个driveInfo集合,其中包含一长串文档.每个文档都包含嵌套对象.我想做的是,每当有人在他们的浏览器中访问/驱动,将整个集合打印为json对象,以便我可以稍后使用jquery抓取所有内容(api的开头)

但是,我收到错误提示"TypeError:将循环结构转换为JSON".页面上的错误指向这行代码:

collection.find({}, function(err, documents) {
  res.send(documents);
});
Run Code Online (Sandbox Code Playgroud)

我不确定问题是什么,或者自我引用的位置.我不是在正确地查询收藏品吗?

javascript json mongodb node.js

12
推荐指数
2
解决办法
1万
查看次数

Spacemacs混合线号

如何在所有文件的spacemacs中获得混合行编号(相对行号,但当前行显示绝对行号而不是0)?

我尝试在user-config中设置相对行号,但这似乎不起作用,并且无法弄清楚如何在相对模式中替换0:

(global-linum-mode)
(setq-default dotspacemacs-line-numbers 'relative)
Run Code Online (Sandbox Code Playgroud)

emacs spacemacs

12
推荐指数
1
解决办法
6987
查看次数

熊猫 - 多指数绘图

我有一些数据,我使用以下代码操作数据帧:

import pandas as pd
import numpy as np

data = pd.DataFrame([[0,0,0,3,6,5,6,1],[1,1,1,3,4,5,2,0],[2,1,0,3,6,5,6,1],[3,0,0,2,9,4,2,1],[4,0,1,3,4,8,1,1],[5,1,1,3,3,5,9,1],[6,1,0,3,3,5,6,1],[7,0,1,3,4,8,9,1]], columns=["id", "sex", "split", "group0Low", "group0High", "group1Low", "group1High", "trim"])
data

#remove all where trim == 0
trimmed = data[(data.trim == 1)]
trimmed

#create df with columns to be split
columns = ['group0Low', 'group0High', 'group1Low', 'group1High']
to_split = trimmed[columns]
to_split

level_group = np.where(to_split.columns.str.contains('0'), 0, 1)
# output: array([0, 0, 1, 1])
level_low_high = np.where(to_split.columns.str.contains('Low'), 'low', 'high')
# output: array(['low', 'high', 'low', 'high'], dtype='<U4')

multi_level_columns = pd.MultiIndex.from_arrays([level_group, level_low_high], names=['group', 'val'])
to_split.columns …
Run Code Online (Sandbox Code Playgroud)

python pandas python-ggplot seaborn

11
推荐指数
2
解决办法
2万
查看次数

Android删除操作栏

我试图禁用我的一些活动的操作栏,但无论我尝试什么,我似乎无法删除它.

在我的styles.xml中,我有:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

<style name="AppTheme.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>

<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />

<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
Run Code Online (Sandbox Code Playgroud)

在我的manifest.xml中,我有:

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".NewActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar">
        </activity>
</application>
Run Code Online (Sandbox Code Playgroud)

我的活动布局文件:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:openDrawer="start">

    <include
        layout="@layout/app_bar_new"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/nav_header_main"
        app:menu="@menu/activity_main_drawer" />

</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)

我的app_bar_new布局文件:

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" …
Run Code Online (Sandbox Code Playgroud)

android android-actionbar android-styles

7
推荐指数
2
解决办法
1万
查看次数

特定片段中的Android游标窗口内存错误

我有一个Android应用程序,它使用服务每5ms收集传感器数据并将其插入sqlite表.在典型的会话中,将有大约40分钟的录音.所有这些代码似乎都运行良好.

我有一个奇怪的问题,如果用户导航到特定的片段,我会收到CursorWindow: Window is full: requested allocation XXX错误.我不确定导致该错误的特定片段有什么特别之处,并且只发生在这个片段中

有问题的片段包含一个按钮,点击该按钮时会执行以下操作:

  • 在外部存储上创建一些目录
  • 复制临时表中的所有传感器数据,并将其插入更永久的表中
  • 将整个.db文件的副本创建到外部存储
  • 获取表的内容并将其写入CSV文件
  • 查询另一个传感器数据表,并将所有传感器数据写入另一个CSV文件
  • 使用媒体扫描程序扫描导出目录中的所有文件,以便可以通过MTP访问它们

片段代码看起来像这样(为简洁起见,许多catch块都被省略了 - 它们大多只是记录信息):

public class SaveFragment extends Fragment implements View.OnClickListener {

    Button saveButton;
    MainActivity mainActivity;
    DBHelper dbHelper;
    Boolean subjectDataExists;
    MediaScanner mediaScanner;
    static ProgressDialog dialog;

    public SaveFragment() {
        // Required empty public constructor
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.fragment_save, container, false);

        //Get save button view
        saveButton = (Button) view.findViewById(R.id.saveButton);
        saveButton.setOnClickListener(this);

        //Get DBHelper
        dbHelper …
Run Code Online (Sandbox Code Playgroud)

sqlite android android-fragments android-cursor android-sqlite

7
推荐指数
0
解决办法
187
查看次数

Python分形框计数 - 分形维数

我有一些图像,我想要计算Minkowski /盒计数维度,以确定图像中的分形特征.这是2个示例图像:

10.jpg:

在此输入图像描述

24.jpg:

在此输入图像描述

我正在使用以下代码来计算分形维数:

import numpy as np
import scipy

def rgb2gray(rgb):
    r, g, b = rgb[:,:,0], rgb[:,:,1], rgb[:,:,2]
    gray = 0.2989 * r + 0.5870 * g + 0.1140 * b
    return gray

def fractal_dimension(Z, threshold=0.9):
    # Only for 2d image
    assert(len(Z.shape) == 2)

    # From https://github.com/rougier/numpy-100 (#87)
    def boxcount(Z, k):
        S = np.add.reduceat(
            np.add.reduceat(Z, np.arange(0, Z.shape[0], k), axis=0),
                               np.arange(0, Z.shape[1], k), axis=1)

        # We count non-empty (0) and non-full boxes (k*k)
        return len(np.where((S …
Run Code Online (Sandbox Code Playgroud)

python numpy image-processing fractals

7
推荐指数
1
解决办法
6285
查看次数

python random.randint vs random.choice:使用相同值的不同结果

我要求我的学生编写一个 python 程序,其中将一对 6 面骰子掷 100 次的结果存储在一个列表中,然后绘制在直方图中。

我一直将 视为random.choice(1,2,3,4,5,6)劣等random.randint(1,6),直到我注意到使用更好的学生的直方图random.choice反映了预期结果。例如,在几乎所有使用 的学生的直方图中,12 (6+6) 的掷骰出现率异常高random.randint(1,6)。有人知道发生了什么事吗?

python random

7
推荐指数
1
解决办法
8276
查看次数