曲线图的使用

 

 

 implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'//曲线图框架
 <com.github.mikephil.charting.charts.LineChart
            android:id="@+id/chart"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginBottom="@dimen/dp_20"/>
 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_historical_detail);
        initChart();//初始化图表
        setData();//设置图标值
    }


    private void setData() {
        //假数据 折线1111    86400
        ArrayList<Entry> values1 = new ArrayList<Entry>();
        List<StatisticsBean> datas = new ArrayList<>();
        LineDataSet set1;
        datas.add(new StatisticsBean(0, "9/21"));//第一个值
        for (int i = 0; i < 30; i++) {
            float val = (float) (Math.random() * 100);//随机数
            datas.add(new StatisticsBean(val, "9/22"));
            Entry barEntry1 = new Entry(i+1, datas.get(i).getYshaft(), getResources().getDrawable(R.mipmap.ic_dian));
            values1.add(barEntry1);
        }
        XAxisValueFormatter0 custom = new XAxisValueFormatter0(datas);
        chart.getXAxis().setValueFormatter(custom);
        if (chart.getData() != null && chart.getData().getDataSetCount() > 0) {
            set1 = (LineDataSet) chart.getData().getDataSetByIndex(0);
            set1.setValues(values1);
            set1.notifyDataSetChanged();
            chart.getData().notifyDataChanged();
            chart.notifyDataSetChanged();
        } else {
            set1 = new LineDataSet(values1, "温度统计");
            set1.setColor(Color.WHITE); //折线的颜色
            set1.setMode(LineDataSet.Mode.HORIZONTAL_BEZIER); // 设置折线类型
            set1.setValueTextColor(Color.WHITE);//设置字体颜色
            set1.setValueTextSize(13f);//设置字体大小
            ArrayList<ILineDataSet> dataSets = new ArrayList<>();
            dataSets.add(set1);
            LineData data = new LineData(dataSets);
            chart.setData(data);//设置值
            data.setValueFormatter(new ValueFormatter() {
                @Override
                public String getFormattedValue(float v) {
                    String str = v + "";
                    if (str.length() == 0) {
                        return str;
                    }
                    if (isRyzSw){
                        return str.substring(0, str.indexOf(".")) + "mg/L";//设置自己的返回位数
                    }else {
                        return str.substring(0, str.indexOf(".")) + "℃";//设置自己的返回位数
                    }
                }
            });
        }
        //chart.invalidate();//绘制图表
        chart.setVisibleXRange(0, 6);//设置x轴显示范围,如果不设置会一次加载所有的点,很难看
        chart.getLegend().setEnabled(false);//左下角颜色块的标注取消
        chart.invalidate();//数据刷新
    }


    /**
     * 初始化曲线图
     */
    private void initChart() {
        chart.getDescription().setEnabled(false); // 禁用描述文本
        //chart.setMaxVisibleValueCount(60);//设置最大值条目,超出之后不会有值
        chart.setTouchEnabled(true);//支持触控手势
        chart.setDragEnabled(true);   //能否拖拽
        chart.setScaleEnabled(false);  //能否缩放
        //chart.setBackgroundColor(getResources().getColor(R.color.bg_green));//背景颜色
        chart.setPinchZoom(true);// 沿两个轴强制缩放
        //X轴线
        XAxis xAxis = chart.getXAxis();//获取x轴线
        //xAxis.setAxisMinimum(0f);   //左边x轴字体大小 从零开始
        //chart.getAxisLeft().setTextSize(3);
        xAxis.setPosition(XAxis.XAxisPosition.BOTTOM); //设置x轴的显示位置
        xAxis.setDrawGridLines(true);//设置网格布局
        xAxis.setGridColor(getResources().getColor(R.color.white));//设置该轴的网格线颜色
        xAxis.setAvoidFirstLastClipping(false);//图表将避免第一个和最后一个标签条目被减掉在图表或屏幕的边缘
        xAxis.setDrawLabels(true);//绘制标签  指x轴上的对应数值 默认true
        xAxis.setGranularityEnabled(true); //缩放后x 轴数据重叠问题
        //xAxis.setTextSize(14f);//X轴线字体大小
        xAxis.setTextColor(getResources().getColor(R.color.white));//X轴线字体颜色
        chart.animateXY(1000, 1000); // 动画水平和垂直1000毫秒
        //Y轴线 左
        YAxis axisLeft = chart.getAxisLeft();//左Y轴
        axisLeft.setDrawLabels(false);//左线隐藏
        //axisLeft.setAxisMaximum(100f);//轴范围
        axisLeft.setAxisMinimum(1f);//左边x轴 从零开始
        axisLeft.setDrawGridLines(true);//设置网格布局
        axisLeft.setGridColor(getResources().getColor(R.color.white));//设置该轴的网格线颜色
        //Y轴线 右
        YAxis axisRight = chart.getAxisRight();//右Y轴
        axisRight.setEnabled(false);//禁用双轴(只使用左轴)
        // 在数据后面而不是顶部画出限制线
        axisLeft.setDrawLimitLinesBehindData(true);
        xAxis.setDrawLimitLinesBehindData(true);
    }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DCA(Differential Co-expression Analysis)曲线是一种常见的基因共表达分析方法,可以用于评估基因共表达关系的生物学意义。而 Lasso 回归方法则可以对基因共表达网络进行建模和分析。下面是使用 Python 绘制 DCA 曲线图使用 Lasso 回归的示例代码: 首先,需要导入必要的库和数据集。 ``` python import pandas as pd import numpy as np import matplotlib.pyplot as plt from sklearn.linear_model import Lasso from sklearn.preprocessing import StandardScaler # 读取数据集 data = pd.read_csv('gene_expression.csv') genes = data.columns[1:] samples = data.iloc[:, 0] X = data.iloc[:, 1:].values ``` 其中,数据集 `gene_expression.csv` 包含了基因表达的数据,其中每一行表示一个样本,每一列表示一个基因,数据的值为基因表达水平。`genes` 是基因的名称,`samples` 是样本的名称,`X` 是基因表达数据。 接下来,需要计算 DCA 曲线。 ``` python # 计算 DCA 曲线 corr = np.corrcoef(X.T) DCA = np.zeros(len(genes)) for i in range(len(genes)): corr_i = np.delete(corr[i], i) DCA[i] = np.mean(np.abs(corr_i)) ``` 其中,`corr` 是基因之间的相关系数矩阵,`DCA` 是 DCA 曲线。 然后,需要使用 Lasso 回归对基因共表达网络进行建模。 ``` python # 使用 Lasso 回归进行建模 scaler = StandardScaler() X_scaled = scaler.fit_transform(X) lasso = Lasso(alpha=0.1, max_iter=10000) lasso.fit(X_scaled, DCA) network = lasso.coef_ != 0 ``` 其中,`scaler` 是用于数据标准化的对象,`X_scaled` 是标准化后的基因表达数据,`lasso` 是 Lasso 回归模型,参数 `alpha` 是正则化强度,`network` 是基因共表达网络,表示每个基因是否在网络中。 最后,可以使用 Matplotlib 绘制 DCA 曲线图和基因共表达网络。 ``` python # 绘制 DCA 曲线 plt.plot(DCA, label='DCA') plt.axhline(y=np.mean(DCA), color='gray', linestyle='--', label='Mean') plt.xlabel('Gene') plt.ylabel('DCA') plt.legend() # 绘制基因共表达网络 plt.figure() plt.imshow(network.reshape(-1, 1), cmap='gray', aspect='auto') plt.xlabel('Gene') plt.ylabel('In network') plt.show() ``` 其中,第一个 `plt.plot` 函数用于绘制 DCA 曲线,第二个 `plt.axhline` 函数用于绘制曲线的平均值。第二个 `plt.figure` 函数用于新建一个图像,`plt.imshow` 函数用于绘制基因共表达网络,其中黑色表示基因在网络中,白色表示基因不在网络中。 综上所述,这就是使用 Python 绘制 DCA 曲线图使用 Lasso 回归的完整代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值