{"id":26263329,"url":"https://github.com/pfuster12/livechart","last_synced_at":"2025-07-08T18:36:17.192Z","repository":{"id":40249840,"uuid":"272056161","full_name":"Pfuster12/LiveChart","owner":"Pfuster12","description":"Android library to draw beautiful and rich line charts.","archived":false,"fork":false,"pushed_at":"2022-05-18T07:06:32.000Z","size":3362,"stargazers_count":141,"open_issues_count":11,"forks_count":17,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-06-17T11:57:29.026Z","etag":null,"topics":["android","android-development","android-library","charts","data-science","data-visualization","drawing","finance","fintech","graphs","jitpack","line-chart","mobile","mobile-app"],"latest_commit_sha":null,"homepage":"https://pfuster12.github.io/LiveChart/livechart/index.html","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Pfuster12.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-06-13T17:34:04.000Z","updated_at":"2025-03-13T13:58:42.000Z","dependencies_parsed_at":"2022-08-24T14:33:50.691Z","dependency_job_id":null,"html_url":"https://github.com/Pfuster12/LiveChart","commit_stats":null,"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/Pfuster12/LiveChart","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Pfuster12%2FLiveChart","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Pfuster12%2FLiveChart/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Pfuster12%2FLiveChart/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Pfuster12%2FLiveChart/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Pfuster12","download_url":"https://codeload.github.com/Pfuster12/LiveChart/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Pfuster12%2FLiveChart/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264324669,"owners_count":23590932,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","android-development","android-library","charts","data-science","data-visualization","drawing","finance","fintech","graphs","jitpack","line-chart","mobile","mobile-app"],"created_at":"2025-03-14T01:17:05.503Z","updated_at":"2025-07-08T18:36:17.166Z","avatar_url":"https://github.com/Pfuster12.png","language":"Kotlin","readme":"## Welcome to the LiveChart Repository :wave:\n\n[![](https://jitpack.io/v/Pfuster12/LiveChart.svg)](https://jitpack.io/#Pfuster12/LiveChart) [![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](http://commitizen.github.io/cz-cli/) [![Android Arsenal](https://img.shields.io/badge/Android%20Arsenal-LiveChart-blue.svg?style=flat)](https://android-arsenal.com/details/1/8143)\n\nLiveChart is an open-source Android library to draw beautiful yet powerful charts. The library allows for color and data display customization, in an easy to learn, descriptive API.\n\n\u003cimg src=\"/.sample-images/livechart_sample.png\" height=\"680\"/\u003e\n\nDraw from a simple line to a fully tagged chart with bounds and baseline. The library is perfect (and started out) to draw financial charts where the baseline and color of the chart matters.\n\n## Add it to your app\n\nTo get LiveChart into your build:\n\n**Step 1. Add the JitPack repository to your build file**\n\nAdd it in your root build.gradle at the end of repositories:\n```gradle\nallprojects {\n\trepositories {\n\t\t...\n\t\tmaven { url 'https://jitpack.io' }\n\t}\n}\n```\n\n**Step 2. Add the dependency**\n\n```gradle\ndependencies {\n\t  implementation 'com.github.Pfuster12:LiveChart:1.3.5'\n}\n```\n\n## Contributing\n\nAnybody is welcome to contribute! The repository is Commitizen friendly, please refer to their guidelines on commit messages.\n\n## Roadmap\n\nThe LiveChart library has just started out. Have a look at the roadmap for new features in the horizon. Have a request? Open up an issue with a feature tag.\n\n## How to Use\n\nYou'll need a reference to a `LiveChart` view first, either through XML or programmatically:\n\n```xml\n\u003c?xml version=\"1.0\" encoding=\"utf-8\"?\u003e\n\u003cFrameLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:tools=\"http://schemas.android.com/tools\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    android:clipChildren=\"false\"\n    tools:context=\".MainActivity\"\u003e\n\n    \u003ccom.yabu.livechart.view.LiveChart\n        android:id=\"@+id/live_chart\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"300dp\"/\u003e\n\n\u003c/FrameLayout\u003e\n```\n\n```kotlin\nval liveChart = findViewById(R.id.live_chart)\n```\n\nLiveChart knows how to draw from a `Dataset` only. Create a new dataset containing a list of `DataPoint`'s:\n\n```kotlin\nval liveChart = findViewById(R.id.live_chart)\n\n val dataset = Dataset(mutableListOf(DataPoint(0f, 1f),\n    DataPoint(1f, 3f),\n    DataPoint(2f, 6f)))\n```\n\nIn order to begin the draw operation, the library uses a chainable, descriptive public API:\n\n```kotlin\nval liveChart = findViewById(R.id.live_chart)\n\n val dataset = Dataset(mutableListOf(DataPoint(0f, 1f),\n    DataPoint(1f, 3f),\n    DataPoint(2f, 6f)))\n\n// set dataset, display options, and ... draw!\nlivechart.setDataset(dataset)\n    .drawYBounds()\n    .drawBaseline()\n    .drawFill()\n    .drawDataset()\n```\n\n## Draw Options\n\nThe chart can be as simple as drawing a line on a blank canvas:\n\n```kotlin\n val dataset = Dataset(mutableListOf(DataPoint(0f, 1f),\n    DataPoint(1f, 3f),\n    DataPoint(2f, 6f)))\n\nlivechart.setDataset(dataset)\n    .drawDataset()\n```\n\nOr provide the full set of display capabilities by adding a baseline, a gradient fill and\nthe axis bounds with data labels:\n\n```kotlin\n val dataset = Dataset(mutableListOf(DataPoint(0f, 1f),\n    DataPoint(1f, 3f),\n    DataPoint(2f, 6f)))\n\nlivechart.setDataset(dataset)\n     // Draws the Y Axis bounds with Text data points.\n    .drawYBounds()\n    // Draws a customizable base line from the first point of the dataset or manually set a data point\n    .drawBaseline()\n    // Set manually the data point from where the baseline draws,\n    .setBaselineManually(1.5f)\n    // Draws a fill on the chart line. You can set whether to draw with a transparent gradient\n    // or a solid fill. Defaults to gradient.\n    .drawFill(withGradient = true)\n    // draws the color of the path and fill conditional to being above/below the baseline datapoint\n    .drawBaselineConditionalColor()\n    // Draw Guidelines in the background\n    .drawVerticalGuidelines(steps=4)\n    .drawHorizontalGuidelines(steps=4)\n    // Draw smooth path\n    .drawSmoothPath()\n    // Draw last point tag label\n    .drawLastPointLabel()\n    .drawDataset()\n```\n\nRefer to the screenshot to view the different options and color change on below baseline/above baseline.\n\nYou can find all the possible draw options under the API reference.\n\n## Styling\n\n### Style Programmatically\n\nSince `v1.1.0` LiveChart supports custom styling of almost all its interface \nthrough the `LiveChartStyle` class. The style object contains all available styling options as \nproperties you can change:\n\n```kotlin\nval style = LiveChartStyle().apply {\n    textColor = Color.BLUE\n    textHeight = 30f \n    mainColor = Color.GREEN\n    mainFillColor = Color.MAGENTA\n    baselineColor = Color.BLUE\n    pathStrokeWidth = 12f\n    baselineStrokeWidth = 6f\n}\n\n// Pass the styling object to the view through the method setLiveChartStyle(style: LiveChartStyle)\nlivechart.setDataset(dataset)\n    .setLiveChartStyle(style)\n    .drawBaseline()\n    .drawFill(withGradient = true)\n    .drawYBounds()\n    .drawDataset()\n```\n\nThe above example would result in a rather horrible (yet accurate) view of:\n\n\u003cimg src=\"/.sample-images/livechart_styling_example_1.png\" height=\"120\"/\u003e\n\nFor the full set of attributes available to customise refer to the `LiveChartStyle` reference.\nAny attributes not explicitly set fallback to the `LiveChartAttributes` object defaults you can view in the\nreference too.\n\n### Style with XML\n\nYou can also style a number of attributes through the XML layout attributes. For example:\n\n```xml\n    \u003ccom.yabu.livechart.view.LiveChart\n        android:id=\"@+id/live_chart\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"300dp\"\n        app:labelTextColor=\"@color/colorAccent\"\n        app:pathColor=\"@color/colorAccent\"\n        app:secondPathColor=\"@color/colorAccent\"\n        app:boundsColor=\"@color/grey\"\n        app:mainCornerRadius=\"4dp\"\n        app:secondCornerRadius=\"4dp\"\n        app:pathStrokeWidth=\"4dp\"\n        app:baselineStrokeWidth=\"4dp\"\n        app:baselineDashGap=\"8dp\"\n        app:labelTextHeight=\"14sp\"\n        app:baselineColor=\"@color/colorPrimaryDark\"\n        app:overlayCircleColor=\"@color/colorPrimaryDark\"\n        app:overlayLineColor=\"@color/colorPrimary\"\n        app:overlayCircleDiameter=\"8dp\"/\u003e\n```\n\nThe current set of available attributes are:\n\n```xml\n    \u003cattr name=\"labelTextColor\" format=\"reference|color\" /\u003e\n    \u003cattr name=\"pathColor\" format=\"reference|color\"/\u003e\n    \u003cattr name=\"secondPathColor\" format=\"reference|color\"/\u003e\n    \u003cattr name=\"fillColor\" format=\"reference|color\"/\u003e\n    \u003cattr name=\"baselineColor\" format=\"reference|color\"/\u003e\n    \u003cattr name=\"boundsColor\" format=\"reference|color\"/\u003e\n    \u003cattr name=\"positiveColor\" format=\"reference|color\"/\u003e\n    \u003cattr name=\"negativeColor\" format=\"reference|color\"/\u003e\n    \u003cattr name=\"mainCornerRadius\" format=\"dimension\"/\u003e\n    \u003cattr name=\"secondCornerRadius\" format=\"dimension\"/\u003e\n    \u003cattr name=\"pathStrokeWidth\" format=\"dimension\"/\u003e\n    \u003cattr name=\"baselineStrokeWidth\" format=\"dimension\"/\u003e\n    \u003cattr name=\"baselineDashGap\" format=\"dimension\"/\u003e\n    \u003cattr name=\"labelTextHeight\" format=\"dimension\"/\u003e\n    \u003cattr name=\"overlayLineColor\" format=\"reference|color\"/\u003e\n    \u003cattr name=\"overlayCircleColor\" format=\"reference|color\"/\u003e\n    \u003cattr name=\"overlayCircleDiameter\" format=\"dimension\"/\u003e\n```\n\n## Second Dataset\n\nThe library allows for data comparisons by drawing a second dataset on the same chart. The\nsecond dataset defaults to a grey color but you can set the color manually through the style object:\n\n```kotlin\n val firstDataset = Dataset(mutableListOf(DataPoint(0f, 1f),\n    DataPoint(1f, 2f),\n    DataPoint(2f, 3f),\n    DataPoint(3f, 4f),\n    DataPoint(4f, 5f),\n    DataPoint(5f, 8f),\n    DataPoint(6f, 13f),\n    DataPoint(7f, 21f)\n))\n\nval secondDataset = Dataset(mutableListOf(DataPoint(0f, 0f),\n    DataPoint(1f, 1f),\n    DataPoint(2f, 2f),\n    DataPoint(3f, 3f),\n    DataPoint(4f, 4f),\n    DataPoint(5f, 5f),\n    DataPoint(6f, 10f),\n    DataPoint(7f, 18f)\n))\n\nval style = LiveChartStyle().apply {\n    mainColor = Color.GRAY\n    secondColor = Color.MAGENTA\n    pathStrokeWidth = 8f\n    secondPathStrokeWidth = 8f\n}\n\nlivechart.setDataset(firstDataset)\n    .setSecondDataset(secondDataset)\n    .setLiveChartStyle(style)\n    .drawYBounds()\n    .drawDataset()\n```\n\nThis results in the following chart:\n\n\u003cimg src=\"/.sample-images/livechart_second_dataset_example_1.PNG\" height=\"160\"/\u003e\n\n\u003e **NOTE** Want more than two datasets? Don't worry, the project roadmap intends to support drawing \n\u003e an unlimited number of datasets provided in a list. \n\n## Touch Events\n \nSince v1.2.0 LiveChart supports touch events and can draw a visual DataPoint slider that moves with your finger.\n\n\u003cimg src=\"/.sample-images/livechart_slider.gif\" height=\"160\"/\u003e\n\nThe touch overlay is built in to the `LiveChart` class. You can style the vertical slider and\ncircle through the `LiveChartStyle` object or through the XML attributes (See above):\n\n```kotlin\nval chartStyle = LiveChartStyle().apply {\n    overlayLineColor = Color.BLUE\n    overlayCircleDiameter = 32f\n    overlayCircleColor = Color.GREEN\n}\n\nlivechart.setDataset(dataset)\n    .setLiveChartStyle(chartStyle)\n    .drawDataset()\n```\n\nJust drawing the horizontal slider doesn't tell us much though. We can add a listener to get the current\n`DataPoint` of the touch event with the `LiveChart.OnTouchCallback`:\n\n```kotlin\nval textView = findViewById(R.id.text_view)\n\nlivechart.setDataset(dataset)\n        .setLiveChartStyle(chartStyle)\n        .setOnTouchCallbackListener(object : LiveChart.OnTouchCallback {\n            override fun onTouchCallback(point: DataPoint) {\n                textView.text = \"(${\"%.2f\".format(point.x)}, ${\"%.2f\".format(point.y)})\"\n            }\n        })\n        .drawDataset()\n```\n\nThis allows us to show the current point the user is dragging along.\n\nSince v1.3.5, the touch overlay can be displayed at all times by applying the `drawTouchOverlayAlways()` flag.\n\n```kotlin\nval textView = findViewById(R.id.text_view)\n\nlivechart.setDataset(dataset)\n        .drawTouchOverlayAlways()\n        .drawDataset()\n```\n\n\n### Disabling the touch overlay\n\nIf you don't want the touch overlay it can be disabled easily:\n\n```kotlin\nlivechart.setDataset(dataset)\n        .disableTouchOverlay()\n        .drawDataset()\n```\n\nYou might want to do this when the chart view is too small to benefit from touch interactions,\nor if you require extra optimization in your view drawing and would require as little overhead as\npossible.\n\n## Smooth Path\n\nSince `1.3.0` LiveChart supports drawing a rounded path instead of straight corners.\n\n\u003cimg src=\"/.sample-images/smooth_path.PNG\" height=\"300\"/\u003e\n\nThere are two options to enable this feature:\n\n1. Toggle an optimized rounded smooth path with `drawSmoothPath`. \n\n**NOTE** There is a calculation overhead to toggling it this way.\n**NOTE** This is the only way for Touch overlay to work correctly.\n\n```kotlin\nlivechart.setDataset(dataset)\n        .drawSmoothPath()\n        .drawDataset()\n```\n\n2. Use the built in Android CornerPathEffect by setting the corner radius in the `LiveChartStyle` properties:\n\n**NOTE** Touch overlay doesn't work correctly here because the Android generated path is not available. \n\n```kotlin\nval chartStyle = LiveChartStyle().apply {\n    mainCornerRadius = 40f\n}\n\nlivechart.setDataset(dataset)\n    .setLiveChartStyle(chartStyle)\n    .drawDataset()\n```\n\n## Guidelines\n\nSince `1.3.1` the chart supports drawing vertical and/or horizontal chart guidelines at *n* number of steps:\n\n\u003cimg src=\"/.sample-images/guidelines.PNG\" height=\"300\"/\u003e\n\nSimply toggle them and pass the desired number of steps. You can also color them through the `LiveChartStyle.guideLineColor` property:\n\n```kotlin\nlivechart.setDataset(dataset)\n    .drawVerticalGuidelines(steps=4)\n    .drawHorizontalGuidelines(steps=4)\n    .drawDataset()\n```\n\n## Known Issues with Touch Overlay\n\nIf you place the LiveChart in a scrollview the touch event gets consumed early.\n\nUnfortunately this is a feature of the Android Touch system. Without ruining the ScrollView\nfunctionality from the library side, a working solution is to call the \nLiveChart view's parent `requestDisallowInterceptTouchEvent(disallowIntercept: Boolean)` :\n\n```\nliveChart.setDataset(dataset)\n                .setOnTouchCallbackListener(object : LiveChart.OnTouchCallback {\n                    override fun onTouchCallback(point: DataPoint) {\n                        liveChart\n                            .parent\n                            .requestDisallowInterceptTouchEvent(true)\n                    }\n\n                    override fun onTouchFinished() {\n                         liveChart\n                              .parent\n                              .requestDisallowInterceptTouchEvent(false)\n                     }\n                })\n                .drawDataset()\n```\n\n## Things to consider\n\nLiveChart tries to leave a minimal footprint as possible, extending from the built-in Android `View` \nclass to perform the draw operations. It follows best practice advice to only perform draw ops\nand avoid setting any variables to memory during the `onDraw()` call.\n\n**HOWEVER**, drawing big datasets is a costly operation and the Android UI will appear 'janky' if you\nare not careful with the amount of data you feed in. \n\nA good Android citizen will only draw the necessary data points, avoid calling `drawDataset()` repeatedly\nand not animate the `LiveChartView` excessively.\n\n## API Reference\n\nDokka Generated Kdocs:\n\n- [LiveChart](https://pfuster12.github.io/LiveChart/livechart/com.yabu.livechart.view/-live-chart/index.html)\n- [LiveChartStyle](https://pfuster12.github.io/LiveChart/livechart/com.yabu.livechart.view/-live-chart-style/index.html)\n\nPublic Methods for LiveChart:\n\n```kotlin\n\n    /**\n     * Set the [dataset] of this chart.\n     */\n    fun setDataset(dataset: Dataset): LiveChart\n\n    /**\n     * Set the Second [dataset] of this chart.\n     */\n    fun setSecondDataset(dataset: Dataset): LiveChart\n    /**\n     * Set the style object [LiveChartStyle] to this chart.\n     */\n    fun setLiveChartStyle(style: LiveChartStyle): LiveChart\n\n    /**\n     * Draw baseline flag.\n     */\n    fun drawBaselineConditionalColor(): LiveChart\n    \n    /**\n     * Draw baseline flag.\n     */\n    fun drawBaseline(): LiveChart\n\n    /**\n     * Draw baseline automatically from first point.\n     */\n    fun drawBaselineFromFirstPoint(): LiveChart\n\n    /**\n     * Draw Fill flag.\n     */\n    fun drawFill(withGradient: Boolean = true): LiveChart\n    \n     /**\n     * Draw smooth path flag.\n     */\n    fun drawSmoothPath(): LiveChart\n\n     /**\n     * Draw straight path flag.\n     */\n    fun drawStraightPath(): LiveChart\n\n    /**\n     * Disable Fill flag.\n     */\n    fun disableFill(): LiveChart\n\n    /**\n     * Draw Y bounds flag.\n     */\n    fun drawYBounds(): LiveChart\n\n    /**\n     * Draw last point label flag.\n     */\n    fun drawLastPointLabel(): LiveChart\n    \n    /**\n     * Draw vertical guidelines\n     * @param steps Number of guidelines\n     */\n    fun drawVerticalGuidelines(steps: Int): LiveChart\n\n    /**\n     * Draw horizontal guidelines\n     * @param steps Number of guidelines\n     */\n    fun drawHorizontalGuidelines(steps: Int): LiveChart\n\n    /**\n     * Set [baseline] data point manually instead of determining from first dataset point.\n     */\n    fun setBaselineManually(baseline: Float): LiveChart\n    \n    /**\n     * Set the OnTouchCallback interface.\n     */\n    fun setOnTouchCallbackListener(listener: OnTouchCallback): LiveChart\n\n    /**\n     * Disable the touch overlay component.\n     * This is useful for small charts that do not benefit from showing the touch event\n     * or as an optimization if you require less overhead on your View.\n     */\n    fun disableTouchOverlay(): LiveChart\n\n    /**\n     * Manually set the INITIAL nearest DataPoint position of the touch overlay.\n     */\n    @PublicApi\n    fun setInitialTouchOverlayPosition(point: DataPoint): LiveChart\n\n    /**\n     * Manually set the overlay nearest DataPoint position at any time after the drawing operation.\n     * IMPORTANT this must be called AFTER drawDataset() as the pathCoordinates\n     * need to be extracted.\n     */\n    @PublicApi\n    fun setTouchOverlayPosition(point: DataPoint)\n\n    /**\n     * Manually set the overlay REAL pixel position at any time after the drawing operation.\n     * This is useful for animating the touch overlay.\n     * IMPORTANT this must be called AFTER drawDataset() as the pathCoordinates\n     * need to be extracted.\n     * The given position will be mapped onto the path created if it exists.\n     */\n    @PublicApi\n    fun setTouchOverlayRealPosition(position: Float)\n\n    /**\n     * Draw on chart and bind overlay to dataset.\n     */\n    fun drawDataset()\n```\n\nLiveChartStyle properties:\n\n```kotlin\n\n/**\n * Class containing style properties to format a LiveChart.\n */\nclass LiveChartStyle {\n\n    /**\n     * Label text color.\n     */\n    var textColor: Int = LiveChartAttributes.TEXT_COLOR\n\n    /**\n     * Main color\n     */\n    var mainColor: Int = LiveChartAttributes.MAIN_COLOR\n\n    /**\n     * Main color\n     */\n    var secondColor: Int = LiveChartAttributes.SECOND_COLOR\n\n    /**\n     * Positive from baseline fill color.\n     */\n    var mainFillColor: Int = Color.parseColor(LiveChartAttributes.FILL_COLOR)\n\n    /**\n     * Positive from baseline color.\n     */\n    var positiveColor: Int = Color.parseColor(LiveChartAttributes.POSITIVE_COLOR)\n\n    /**\n     * Negative from baseline color.\n     */\n    var negativeColor: Int =  Color.parseColor(LiveChartAttributes.NEGATIVE_COLOR)\n\n    /**\n     * Positive from baseline fill color.\n     */\n    var positiveFillColor: Int =  Color.parseColor(LiveChartAttributes.POSITIVE_FILL_COLOR)\n\n    /**\n     * Negative from baseline fill color.\n     */\n    var negativeFillColor: Int = Color.parseColor(LiveChartAttributes.NEGATIVE_FILL_COLOR)\n\n    /**\n     * Main Path corner radius pixel amount.\n     */\n    var mainCornerRadius: Float = LiveChartAttributes.CORNER_RADIUS\n\n    /**\n     * Second Path corner radius pixel amount.\n     */\n    var secondCornerRadius: Float = LiveChartAttributes.CORNER_RADIUS\n\n    /**\n     * Baseline color.\n     */\n    var baselineColor: Int = LiveChartAttributes.BASELINE_LINE_COLOR\n\n    /**\n     * Bounds color.\n     */\n    var boundsLineColor: Int = LiveChartAttributes.BOUNDS_LINE_COLOR\n\n    /**\n     * Baseline color.\n     */\n    var guideLineColor: Int = LiveChartAttributes.GUIDELINE_COLOR\n\n    /**\n     * Path stroke width\n     */\n    var pathStrokeWidth = LiveChartAttributes.STROKE_WIDTH\n\n    /**\n     * Second dataset Path stroke width\n     */\n    var secondPathStrokeWidth = LiveChartAttributes.STROKE_WIDTH\n\n    /**\n     * Baseline stroke width\n     */\n    var baselineStrokeWidth = LiveChartAttributes.BASELINE_STROKE_WIDTH\n\n    /**\n     * Baseline dash line width\n     */\n    var baselineDashLineWidth = LiveChartAttributes.DASH_LINE_STROKE\n\n    /**\n     * Baseline dash line gap width\n     */\n    var baselineDashLineGap = LiveChartAttributes.DASH_LINE_GAP\n\n    /**\n     * Baseline dash line gap width\n     */\n    var chartEndPadding = LiveChartAttributes.CHART_END_PADDING\n\n    /**\n     * Chart text height\n     */\n    var textHeight = LiveChartAttributes.TEXT_HEIGHT\n\n    /**\n     * Overlay vertical line color.\n     */\n    var overlayLineColor = LiveChartAttributes.OVERLAY_LINE_COLOR\n\n    /**\n     * Overlay livechart_circle color.\n     */\n    var overlayCircleColor = LiveChartAttributes.OVERLAY_CIRCLE_COLOR\n\n    /**\n     * Overlay livechart_circle diameter.\n     */\n    var overlayCircleDiameter = LiveChartAttributes.OVERLAY_CIRCLE_DIAMETER\n}\n```\n\n### Using LiveChartView only\n\nEven though the main entry point to this library is the `LiveChart` layout class which contains extra\ntouch functionality, the base `View` class `LiveChartView` that actually performs the drawing is kept \npublic in case there is performance requirements and you don't need want the touch overlay views \noverhead (You can also disable it, see above).\n\nIt also allows to override it and add custom functionality to this base class, as LiveChart is kept final.\n\nThe View has the exact same public API and xml attributes as the `LiveChart` class so they are almost\ninterchangeable.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpfuster12%2Flivechart","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpfuster12%2Flivechart","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpfuster12%2Flivechart/lists"}