{
"info": {
"author": "Ted Petrou",
"author_email": "petrou.theodore@gmail.com",
"bugtrack_url": null,
"classifiers": [
"License :: OSI Approved :: BSD License",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3"
],
"description": "\n# Dexplot\n\nA Python library for making data visualizations.\n\nThe current aim of Dexplot is to make data visualization creation in Python more robust and straightforward. Dexplot is built on top of Matplotlib and accepts Pandas DataFrames as inputs. \n\n## Installation\n\n`pip install dexplot`\n\n## Goals\n\nThe primary goals for Dexplot are:\n\n* Maintain a very consistent API with as few functions as necessary to make the desired statistical plots\n* Allow the user to tweak the plots without digging into Matplotlib\n\n\n## Tidy Data from Pandas\nDexplot only accepts Pandas DataFrames as input for its plotting functions that are in \"tidy\" form. \n\n## Sample plots\nDexplot currently maintains two primary functions, `aggplot` which is used to aggregate data and `jointplot`, which is used to plot raw values from two variables against each other. `heatmap` is another function available that produces just a single heatmap.\n\n`aggplot` can create five different kinds of plots.\n\n* `bar`\n* `line`\n* `box`\n* `hist`\n* `kde`\n\n`jointplot` can create four different kinds of plots\n\n* `scatter`\n* `line`\n* `2D kde`\n* `bar`\n\nThere are 7 primary parameters to `aggplot`:\n\n* `agg` - Name of column to be aggregated. If it is a column with string/categorical values, then the counts or relative frequency percentage will be returned.\n* `groupby` - Name of column whose unique values will form independent groups. This is used in a similar fashion as the `group by` SQL clause.\n* `data` - The Pandas DataFrame\n* `hue` - The name of the column to further group the data within a single plot\n* `row` - The name of the column who's unique values split the data in to separate rows\n* `col` - The name of the column who's unique values split the data in to separate columns\n* `kind` - The kind of plot to create. One of the five strings from above.\n\n`jointplot` uses `x` and `y` instead of `groupby` and `agg`.\n\n### City of Houston Data\n\nTo get started, we will use City of Houston employee data collected from the year 2016. It contains public information from about 1500 employees and is located in Dexplot's GitHub repository.\n\n\n\n```python\nimport pandas as pd\nimport dexplot as dxp\n```\n\n\n```python\nemp = pd.read_csv('notebooks/data/employee.csv')\nemp.head()\n```\n\n\n\n\n
\n
\n \n
\n
\n
title
\n
dept
\n
salary
\n
race
\n
gender
\n
experience
\n
experience_level
\n
\n \n \n
\n
0
\n
POLICE OFFICER
\n
Houston Police Department-HPD
\n
45279.0
\n
White
\n
Male
\n
1
\n
Novice
\n
\n
\n
1
\n
ENGINEER/OPERATOR
\n
Houston Fire Department (HFD)
\n
63166.0
\n
White
\n
Male
\n
34
\n
Veteran
\n
\n
\n
2
\n
SENIOR POLICE OFFICER
\n
Houston Police Department-HPD
\n
66614.0
\n
Black
\n
Male
\n
32
\n
Veteran
\n
\n
\n
3
\n
ENGINEER
\n
Public Works & Engineering-PWE
\n
71680.0
\n
Asian
\n
Male
\n
4
\n
Novice
\n
\n
\n
4
\n
CARPENTER
\n
Houston Airport System (HAS)
\n
42390.0
\n
White
\n
Male
\n
3
\n
Novice
\n
\n \n
\n
\n\n\n\n### Plotting the average salary by department\nThe `agg` parameter is very important and is what will be aggregated (summarized by a single point statistic, like the mean or median). It is the first parameter and only parameter you must specify (besides `data`). If this column is numeric, then by default, the mean of it will be calculated. Here, we specify the `groupby` parameter, who's unique values form the independent groups and label the x-axis.\n\n\n```python\ndxp.aggplot(agg='salary', groupby='dept', data=emp)\n```\n\n\n\n\n \n\n\n\n\n\n\n\n### Make horizontal with the `orient` parameter\nThe `orient` parameter controls whether the plot will be horizontal or vertical. By default it is set to `'h'`.\n\n\n```python\ndxp.aggplot(agg='salary', groupby='dept', data=emp, orient='h')\n```\n\n\n\n\n \n\n\n\n\n\n\n\n### Controlling the figure size\nOne of the goals of Dexplot is to not have you dip down into the details of Matplotlib. We can use the `figsize` parameter to change the size of our plot.\n\n\n```python\ndxp.aggplot(agg='salary', groupby='dept', data=emp, orient='h', figsize=(8, 4))\n```\n\n\n\n\n \n\n\n\n\n\n\n\n### Adding another dimension with `hue`\nThe `hue` parameter may be used to further subdivide each unique value in the `groupby` column. Notice that long tick labels are automatically wrapped.\n\n\n```python\ndxp.aggplot(agg='salary', groupby='dept', data=emp, hue='gender')\n```\n\n\n\n\n \n\n\n\n\n\n\n\n## Aggregating a String/Categorical column\nIt is possible to use a string/categorical column as the aggregating variable. In this instance, the counts of the unique values of that column will be returned. Because this is already doing a `groupby`, you cannot specify a `groupby` column in this instance. Let's get the count of employees by race.\n\n\n```python\ndxp.aggplot(agg='race', data=emp, figsize=(8, 4))\n```\n\n\n\n\n \n\n\n\n\n\n\n\n## Using `hue` with a String/Categorical column\nUsing a `groupby` is not allowed when a string/categorical column is being aggregated. But, we can still sub-divide the groups further by specifying `hue`.\n\n\n```python\ndxp.aggplot(agg='race', data=emp, hue='dept')\n```\n\n\n\n\n \n\n\n\n\n\n\n\n## Getting the relative frequency percentage with `normalize`\nIt is possible to turn the raw counts into percentages by passing a value to `normalize`. Let's find the percentage of all employees by race.\n\n\n```python\ndxp.aggplot(agg='race', data=emp, normalize='all', figsize=(8, 4))\n```\n\n\n\n\n \n\n\n\n\n\n\n\n## You can normalize over any variable\nThe parameter `normalize` can be one of the values passed to the parameters `'agg'`, `'hue'`, `'row'`, `'col'`, or a tuple containing any number of these or `'all'`. For instance, in the following plot, you can normalize by either `race` or `dept`.\n\n\n```python\ndxp.aggplot(agg='race', data=emp, hue='dept', normalize='race')\n```\n\n\n\n\n \n\n\n\n\n\n\n\n## Data normalized by race\nAs you can see, the data was normalized by race. For example, from the graph, we can tell that about 30% of black employees were members of the police department. We can also normalize by department. From the graph, about 10% of the Health & Human Services employees were Asian.\n\n\n```python\ndxp.aggplot(agg='race', data=emp, hue='dept', normalize='dept')\n```\n\n\n\n\n \n\n\n\n\n\n\n\n## Stacked Bar Plots\nAll bar plots that have use the `hue` variable, can be stacked. Here, we stack the maximum salary by department grouped by race.\n\n\n```python\ndxp.aggplot(agg='salary', data=emp, hue='dept', groupby='race', aggfunc='max', stacked=True)\n```\n\n\n\n\n \n\n\n\n\n\n\n\n## Stacking counts\nThe raw counts of each department by experience level are stacked here.\n\n\n```python\ndxp.aggplot(agg='experience_level', data=emp, hue='dept', aggfunc='max', stacked=True)\n```\n\n\n\n\n \n\n\n\n\n\n\n\n## Stacking relative frequencies\nThe relative frequencies of each department by each race and experience level.\n\n\n```python\ndxp.aggplot(agg='experience_level', data=emp, hue='dept', row='race', \n normalize=('race', 'experience_level'), wrap=3, stacked=True)\n```\n\n\n\n\n (
,)\n\n\n\n\n\n\n\n# Other kinds of plots `line`, `box`, `hist`, and `kde`\n`aggplot` is capable of making four other kinds of plots. The `line` plot is very similar to the bar plot but simply connects the values together. Let's go back to a numeric column and calculate the **median** salary by department across each gender.\n\n\n```python\ndxp.aggplot(agg='salary', data=emp, groupby='dept', hue='gender', kind='line', aggfunc='median')\n```\n\n\n\n\n \n\n\n\n\n\n\n\n## `aggfunc` can take any string value that Pandas can\nThere are more than a dozen string values that `aggfunc` can take. These are simply passed to Pandas `groupby` method which does the aggregation.\n\n## All plots can be both vertical and horizontal\nWe can rotate all plots with `orient`. \n\n\n```python\ndxp.aggplot(agg='salary', data=emp, groupby='dept', hue='gender', kind='line', aggfunc='median', orient='h')\n```\n\n\n\n\n \n\n\n\n\n\n\n\n## Boxplots\nHere is the same data plotted as a box plot. This isn't actually an aggregation, so the `aggfunc` parameter is meaningless here. Instead, all the values of the particular group are plotted.\n\n\n```python\ndxp.aggplot(agg='salary', data=emp, groupby='dept', hue='gender', kind='box', orient='h')\n```\n\n\n\n\n \n\n\n\n\n\n\n\n## Histograms and KDE's\nAs with boxplots, histograms and kdes do not function with `aggfunc` as they aren't aggregating but simply displaying all the data for us. Also, it is not possible to use both `groupby` and `agg` with these plots.\n\n\n```python\ndxp.aggplot(agg='salary', data=emp, groupby='dept', kind='hist', orient='v')\n```\n\n\n\n\n \n\n\n\n\n\n\n\n\n```python\ndxp.aggplot(agg='salary', data=emp, groupby='dept', kind='kde', orient='v')\n```\n\n\n\n\n \n\n\n\n\n\n\n\n## Splitting into separate plots\nThe `row` and `col` parameters can be used to split the data into separate plots. Each unique value of `row` or `col` will create a new plot. A one-item tuple consisting of the entire Figure is returned.\n\n\n```python\ndxp.aggplot(agg='salary', data=emp, groupby='experience_level', kind='kde', orient='v', row='dept')\n```\n\n\n\n\n (
,)\n\n\n\n\n\n\n\n## Use the `wrap` parameter to make new rows/columns\nSet the `wrap` parameter to an integer to determine where a new row/column will be formed.\n\n\n```python\ndxp.aggplot(agg='salary', data=emp, groupby='experience_level', kind='box', orient='v', row='dept', wrap=3)\n```\n\n\n\n\n (
,)\n\n\n\n\n\n\n\n## `wrap` works for both `row` or `col`\n\n\n```python\ndxp.aggplot(agg='salary', data=emp, groupby='experience_level', kind='box', orient='v', col='dept', wrap=5)\n```\n\n\n\n\n (
,)\n\n\n\n\n\n\n\n# Use both `row` and `col` for a entire grid\nBy using both `row` and `col`, you can maximize the number of variables you divide the data into.\n\n\n```python\ndxp.aggplot(agg='salary', data=emp, groupby='gender', kind='kde', row='dept', col='experience_level')\n```\n\n\n\n\n (
,)\n\n\n\n\n\n\n\n# Normalize by more than one variable\n\nBefore, we normalized by just a single variable. It is possible to normalize by multiple variables with a tuple. Here we normalize by department and gender. Adding up all the blue bars for each department should add to 1.\n\n\n```python\ndxp.aggplot(agg='dept', data=emp, hue='gender', kind='bar', row='race', normalize=('dept', 'gender'))\n```\n\n\n\n\n (
,)\n\n\n\n\n\n\n\n## Normalize by three variables\nHere we normalize by race, experience level, and gender. Each set of orange/blue bars within each plot will add to 1.\n\n\n```python\ndxp.aggplot(agg='dept', data=emp, hue='gender', kind='bar', row='race', \n col='experience_level', normalize=('gender', 'experience_level', 'race'), orient='h')\n```\n\n\n\n\n (
,)\n\n\n\n\n\n\n\n# Joint Plots\n`joinplot` works differently than `aggplot` in that no aggregation takes place. It plots the raw values between two variables. It can split the data into groups or new plots with `hue`, `row`, and `col`. The default plot is a scatter plot, but you can also provide a string value to the `kind` parameter to make line, kde, or bar plots. \n\n\n```python\ndxp.jointplot('experience', 'salary', data=emp)\n```\n\n\n\n\n \n\n\n\n\n\n\n\n## Split data in the same plot with `hue`\n\n\n```python\ndxp.jointplot('experience', 'salary', data=emp, hue='gender')\n```\n\n\n\n\n \n\n\n\n\n\n\n\n## Plot a regression line by setting `fit_reg` equal to `True`\nBy default it plots the 95% confidence interval around the mean.\n\n\n```python\ndxp.jointplot('experience', 'salary', data=emp, hue='gender', fit_reg=True)\n```\n\n\n\n\n \n\n\n\n\n\n\n\n## Further split the data into separate plots with `row` and `col`\n\n\n```python\ndxp.jointplot('experience', 'salary', data=emp, hue='gender', row='dept', wrap=3, fit_reg=True)\n```\n\n\n\n\n (
,)\n\n\n\n\n\n\n\n## Use the `s` parameter to change the size of each marker\nLet `s` equal a column name containing numeric values to set each marker size individually. We need to create another numeric variable first since the dataset only contains two.\n\n\n```python\nimport numpy as np\nemp['num'] = np.random.randint(10, 300, len(emp))\n```\n\n\n```python\ndxp.jointplot('experience', 'salary', data=emp, hue='gender', row='dept', wrap=3, s='num')\n```\n\n\n\n\n (
,)\n\n\n\n\n\n\n\n# Line Plots\n\n\n```python\ndf_stocks = pd.read_csv('notebooks/data/stocks.csv', parse_dates=['date'])\ndf_stocks.head()\n```\n\n\n\n\n
,)\n\n\n\n\n\n\n\n# Bar Plots for aggregated data\n\nIf your data is already aggregated, you can use `jointplot` to plot it.\n\n\n```python\ndf = emp.groupby('dept').agg({'salary':'mean'}).reset_index()\ndf\n```\n\n\n\n\n
\n\n
\n \n
\n
\n
dept
\n
salary
\n
\n \n \n
\n
0
\n
Health & Human Services
\n
51324.980583
\n
\n
\n
1
\n
Houston Airport System (HAS)
\n
53990.368932
\n
\n
\n
2
\n
Houston Fire Department (HFD)
\n
59960.441096
\n
\n
\n
3
\n
Houston Police Department-HPD
\n
60428.745614
\n
\n
\n
4
\n
Parks & Recreation
\n
39426.150943
\n
\n
\n
5
\n
Public Works & Engineering-PWE
\n
50207.806452
\n
\n \n
\n
\n\n\n\n\n```python\ndxp.jointplot('dept', 'salary', data=df, kind='bar')\n```\n\n\n\n\n \n\n\n\n\n\n\n\n# Heatmaps\n\nHeatmaps work with both tidy and aggregated data. \n\n## Frequency\nWhen working with tidy data, passing it just `x` and `y` will plot the frequency of occurrences for all of the combinations of their unique values. Place the count as text in the box with `annot`. The default formatting has two decimals.\n\n\n```python\ndxp.heatmap(x='dept', y='race', data=emp, annot=True, fmt='.0f')\n```\n\n\n\n\n (,)\n\n\n\n\n\n\n\n## Aggregating a variable with heatmaps\nSet the `agg` parameter to aggregate a particular variable. Choose how you will aggregate with the `aggfunc` parameter, which takes any string that Pandas can. The default it the mean.\n\n\n```python\ndxp.heatmap(x='dept', y='race', agg='salary', aggfunc='max', data=emp, annot=True, fmt='.0f')\n```\n\n\n\n\n (,)\n\n\n\n\n\n\n\n## Normalize heatmaps by row, column, or all data\nYou can normalize the data by row, column, or all data with. Use the string name of the column for row and column normalization. Below we find the total percentage of all combined years of experience normalized by race. For example, of all the total years of experience for White employees, 89% of those years are male.\n\n\n```python\ndxp.heatmap(x='race', y='gender', agg='experience', aggfunc='sum', \n data=emp, annot=True, fmt='.3f', normalize='race')\n```\n\n\n\n\n (,)\n\n\n\n\n\n\n\n\n```python\ndxp.heatmap(x='race', y='dept', agg='experience', aggfunc='sum', \n data=emp, annot=True, fmt='.3f', normalize='race', corr=True)\n```\n\n\n\n\n (,)\n\n\n\n\n\n\n\n## Heatmaps without aggregating data\nIf you pass just the DataFrame into `heatmap` then those raw values will be used to create the colors. Here we plot some random numbers from a normal distribution.\n\n\n```python\ndf = pd.DataFrame(np.random.randn(10, 5), columns=list('abcde'))\nfig, = dxp.heatmap(data=df, annot=True)\n```\n\n\n\n\n\n## Find correlations by setting `corr` equal to `True`\n\nSetting the `corr` parameter to True computes the pairwise correlation matrix between the columns. Any string columns are discarded. Below, we use the popular Kaggle housing dataset.\n\n\n```python\nhousing = pd.read_csv('notebooks/data/housing.csv')\nfig, = dxp.heatmap(data=housing, corr=True, figsize=(16, 16))\n```\n\n\n\n\n\n# Comparison with Seaborn\nIf you have used the Seaborn library, then you should notice a lot of similarities. Much of Dexplot was inspired by Seaborn. Below is a list of the extra features in Dexplot not found in Seaborn\n\n* The ability to graph relative frequency percentage and normalize over any number of variables\n* Far fewer public functions. Only two at the moment\n* No need for multiple functions to do the same thing. Seaborn has both `countplot` and `barplot`\n* Ability to make grids with a single function instead of having to use a higher level function like `catplot`\n* Pandas `groupby` methods are available as strings\n* Both x/y-labels and titles are automatically wrapped so that they don't overlap\n* The figure size (plus several other options) and available to change without dipping down into matplotlib\n* No new types like FacetGrid. Only matplotlib objects are returned\n\n\n",
"description_content_type": "text/markdown",
"docs_url": null,
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "https://github.com/dexplo/dexplot",
"keywords": "",
"license": "",
"maintainer": "",
"maintainer_email": "",
"name": "dexplot",
"package_url": "https://pypi.org/project/dexplot/",
"platform": "",
"project_url": "https://pypi.org/project/dexplot/",
"project_urls": {
"Homepage": "https://github.com/dexplo/dexplot"
},
"release_url": "https://pypi.org/project/dexplot/0.0.9/",
"requires_dist": null,
"requires_python": "",
"summary": "Simple plotting library for both long and wide data integrated with DataFrames",
"version": "0.0.9"
},
"last_serial": 4350039,
"releases": {
"0.0.1": [
{
"comment_text": "",
"digests": {
"md5": "b1a9c15e801d4a675236bfde4cfe1f09",
"sha256": "3d6052673966d9999af6cdba35744aa779dba062e76a6d004f0327e3a0685ef0"
},
"downloads": -1,
"filename": "dexplot-0.0.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "b1a9c15e801d4a675236bfde4cfe1f09",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 1220,
"upload_time": "2018-08-21T16:59:41",
"url": "https://files.pythonhosted.org/packages/f6/db/b65ea84c49deab2e118e87b8304f9a790285c4fe39a6ba30634bd95f009e/dexplot-0.0.1-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "e300600aeacf2545af6117ebfd7d6547",
"sha256": "1380f4fdfac1163942b9dcf3d52f5e781a302eaa09ea1f2aaffd6acf4a2f45cb"
},
"downloads": -1,
"filename": "dexplot-0.0.1.tar.gz",
"has_sig": false,
"md5_digest": "e300600aeacf2545af6117ebfd7d6547",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 1016,
"upload_time": "2018-08-21T16:59:42",
"url": "https://files.pythonhosted.org/packages/97/06/a756a63c0c242e47b3a59bfd83d52dc9470cc3a829c0a82f7a6b9797b2da/dexplot-0.0.1.tar.gz"
}
],
"0.0.2": [
{
"comment_text": "",
"digests": {
"md5": "cf4fb9c9b6f4c7647c4c9fbaba22a5b1",
"sha256": "9eaaff137db5c318154e7fe9413a01b0a32dfb411d39b314bc8449ecb66adfce"
},
"downloads": -1,
"filename": "dexplot-0.0.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "cf4fb9c9b6f4c7647c4c9fbaba22a5b1",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 5387,
"upload_time": "2018-09-14T01:01:58",
"url": "https://files.pythonhosted.org/packages/8f/7e/0a8a7a0dfd69dae8aeda507a372f88dc3f7f938c2642078092ff8375d199/dexplot-0.0.2-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "5c3e91a3d498670cfebc64708aeeb9fc",
"sha256": "fb73e1d06492be1e79475228479b08ca06bf0cab830098d990dc6c3465b61177"
},
"downloads": -1,
"filename": "dexplot-0.0.2.tar.gz",
"has_sig": false,
"md5_digest": "5c3e91a3d498670cfebc64708aeeb9fc",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 4968,
"upload_time": "2018-09-14T01:02:00",
"url": "https://files.pythonhosted.org/packages/cf/66/1f4e95d5a60349d0d9eaf10d167da3fbad0ac93157920c239443884ba80e/dexplot-0.0.2.tar.gz"
}
],
"0.0.3": [
{
"comment_text": "",
"digests": {
"md5": "0e4aeeb10c38a8c92e8a69ae6848b562",
"sha256": "961837e69f5cc0c7b26589118cd2b44d3d518aca9d69b394ad570764adaac176"
},
"downloads": -1,
"filename": "dexplot-0.0.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "0e4aeeb10c38a8c92e8a69ae6848b562",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 18145,
"upload_time": "2018-10-04T21:49:18",
"url": "https://files.pythonhosted.org/packages/c5/0b/f349f7f561832fd85bab4e1bad0752a77b347849e395d1a8093e1db904b0/dexplot-0.0.3-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "dcffc98e55d7fefe9b2dfbf80b4dd510",
"sha256": "4f93a726691ed8641155946462ac65edd081e04e4c4ff927fb2d6495598f408c"
},
"downloads": -1,
"filename": "dexplot-0.0.3.tar.gz",
"has_sig": false,
"md5_digest": "dcffc98e55d7fefe9b2dfbf80b4dd510",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 17859,
"upload_time": "2018-10-04T21:49:20",
"url": "https://files.pythonhosted.org/packages/5a/65/7f21661a4517cfd212eac649fe180fee66d040e52e668ac894efec0e5d24/dexplot-0.0.3.tar.gz"
}
],
"0.0.4": [
{
"comment_text": "",
"digests": {
"md5": "c7cc52d5c8e50e089efbddf6e0ad28c6",
"sha256": "1ba1c18ab471aa34e9e8cb275148d6a1aec28a62814a29c31ed509fcee485939"
},
"downloads": -1,
"filename": "dexplot-0.0.4-py3-none-any.whl",
"has_sig": false,
"md5_digest": "c7cc52d5c8e50e089efbddf6e0ad28c6",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 18144,
"upload_time": "2018-10-04T22:17:25",
"url": "https://files.pythonhosted.org/packages/e2/17/0bf17ee576ff110cb945c60ecc075cda5bb01090c75f63a8d8945c3389e8/dexplot-0.0.4-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "26e45990148018f201d644056b40e693",
"sha256": "3ded42abf855bb6a9d8c7f162dc8c6bcd1c152e6b4bfeede64f336eb89c1ef75"
},
"downloads": -1,
"filename": "dexplot-0.0.4.tar.gz",
"has_sig": false,
"md5_digest": "26e45990148018f201d644056b40e693",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 17929,
"upload_time": "2018-10-04T22:17:26",
"url": "https://files.pythonhosted.org/packages/d8/13/b6a0d9e83e6470a50791ef334a990e3ce168c92864323f66afdbc2a6b3f0/dexplot-0.0.4.tar.gz"
}
],
"0.0.5": [
{
"comment_text": "",
"digests": {
"md5": "224b28d9f0d71d8684afc96a6cd730dd",
"sha256": "3be0f0df7434b1f6ee923794592efd334ef2659f6341116047c0bc242e1febb3"
},
"downloads": -1,
"filename": "dexplot-0.0.5-py3-none-any.whl",
"has_sig": false,
"md5_digest": "224b28d9f0d71d8684afc96a6cd730dd",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 18146,
"upload_time": "2018-10-04T22:21:49",
"url": "https://files.pythonhosted.org/packages/ce/6e/29e1e9760d494543761e6d76d1659fe655638ae97d59e2734fd32fe52895/dexplot-0.0.5-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "222dc7d573c7f88a3b21b8de8fc148e7",
"sha256": "eb2a47626137529aa6a2dc1960f8e9347db5432eb38158a45f1e982d58b6fb23"
},
"downloads": -1,
"filename": "dexplot-0.0.5.tar.gz",
"has_sig": false,
"md5_digest": "222dc7d573c7f88a3b21b8de8fc148e7",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 17924,
"upload_time": "2018-10-04T22:21:50",
"url": "https://files.pythonhosted.org/packages/53/31/e7235b3e6fc9f17c696ddb21446d02e9890186e30ad940dde82a39e378d1/dexplot-0.0.5.tar.gz"
}
],
"0.0.6": [
{
"comment_text": "",
"digests": {
"md5": "e966abeb6bd16c2ba39fc9d3e70fee0b",
"sha256": "d952fb166365458fd717cd79dfda3bbb677a8ecaa291c6db68b494c11e237017"
},
"downloads": -1,
"filename": "dexplot-0.0.6-py3-none-any.whl",
"has_sig": false,
"md5_digest": "e966abeb6bd16c2ba39fc9d3e70fee0b",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 18195,
"upload_time": "2018-10-04T22:22:40",
"url": "https://files.pythonhosted.org/packages/0c/2a/d254df6da96f66cbf48af98788def73ff9115cef2d8e6fb0f88a41a63d26/dexplot-0.0.6-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "ac2fc289bccd315708386103dc9a6d7b",
"sha256": "93603fe6cd0364ac3df48ce58baa7d49db4493201e65152cd492ea447afc1ab7"
},
"downloads": -1,
"filename": "dexplot-0.0.6.tar.gz",
"has_sig": false,
"md5_digest": "ac2fc289bccd315708386103dc9a6d7b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 17928,
"upload_time": "2018-10-04T22:22:41",
"url": "https://files.pythonhosted.org/packages/bf/3c/8f2876106f30963b66a82c19b9510c2d34ffd9f3edab03b854fc71124353/dexplot-0.0.6.tar.gz"
}
],
"0.0.7": [
{
"comment_text": "",
"digests": {
"md5": "61f9bd6a1da7854ff393352739d89862",
"sha256": "f14bc48bbffb4cfa068af398548af1fd0d98aec6d488a61cf6a6c0832f0ff43b"
},
"downloads": -1,
"filename": "dexplot-0.0.7-py3-none-any.whl",
"has_sig": false,
"md5_digest": "61f9bd6a1da7854ff393352739d89862",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 36014,
"upload_time": "2018-10-07T05:07:36",
"url": "https://files.pythonhosted.org/packages/99/1b/8ef680d8fb59317e23618fb0ec6613670b6e89d03b5a9e8f8190b266c8af/dexplot-0.0.7-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "1c5f942a4f0ad8794e5669647722b487",
"sha256": "c141737428809740a8210580037134ab05c57096a98a92ef12aeea24e798c5fa"
},
"downloads": -1,
"filename": "dexplot-0.0.7.tar.gz",
"has_sig": false,
"md5_digest": "1c5f942a4f0ad8794e5669647722b487",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 29240,
"upload_time": "2018-10-07T05:07:38",
"url": "https://files.pythonhosted.org/packages/4f/c6/0af96dcb66e09c99eb26f76f47f999268c1d964cf630a15a1ec195292b8d/dexplot-0.0.7.tar.gz"
}
],
"0.0.8": [
{
"comment_text": "",
"digests": {
"md5": "60b1f3fb8a662681a9d13cea9e67ae74",
"sha256": "b49ed955afcd78c70c9ea742e2da262430df4f6786546632637cf17e0af21152"
},
"downloads": -1,
"filename": "dexplot-0.0.8-py3-none-any.whl",
"has_sig": false,
"md5_digest": "60b1f3fb8a662681a9d13cea9e67ae74",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 36025,
"upload_time": "2018-10-07T19:44:25",
"url": "https://files.pythonhosted.org/packages/5e/e1/f9c42f0689f48daebb17b845441b7442e1e8e939159a861cbdfab29b4218/dexplot-0.0.8-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "c93571adddc8ea29a50e521511cadc5d",
"sha256": "37f8af7c562052f62dc63797bed03162752a0e0d628c49cc8ff9126842b40f6c"
},
"downloads": -1,
"filename": "dexplot-0.0.8.tar.gz",
"has_sig": false,
"md5_digest": "c93571adddc8ea29a50e521511cadc5d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 29255,
"upload_time": "2018-10-07T19:44:26",
"url": "https://files.pythonhosted.org/packages/5a/3d/ec3a5cf426a6ca02c7356c08062c398c103ccc668dd421ec479c535b9af3/dexplot-0.0.8.tar.gz"
}
],
"0.0.9": [
{
"comment_text": "",
"digests": {
"md5": "d15460467d1147919ea0438f7b34c4bc",
"sha256": "62dca3add28758a16f38577239e3ae6d9121102e222009a68f55f8013e0a251f"
},
"downloads": -1,
"filename": "dexplot-0.0.9-py3-none-any.whl",
"has_sig": false,
"md5_digest": "d15460467d1147919ea0438f7b34c4bc",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 36112,
"upload_time": "2018-10-07T20:46:53",
"url": "https://files.pythonhosted.org/packages/5b/af/555b6189101197f4b2eb3319c96b98aa4e94c1b4bfb22953324f81ced326/dexplot-0.0.9-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "0feb5bcf28b98a4f43d1de1aee5c32c6",
"sha256": "1e6af6a6e139a57bb7cf9b7f1ddac3ef42e8b0ed0c223edf67f65a90a9d10f78"
},
"downloads": -1,
"filename": "dexplot-0.0.9.tar.gz",
"has_sig": false,
"md5_digest": "0feb5bcf28b98a4f43d1de1aee5c32c6",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 29323,
"upload_time": "2018-10-07T20:46:54",
"url": "https://files.pythonhosted.org/packages/58/e6/c002865394758a1c79b3879dc04dd7ec78b8dd5f210a752fc36b9c52055d/dexplot-0.0.9.tar.gz"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "d15460467d1147919ea0438f7b34c4bc",
"sha256": "62dca3add28758a16f38577239e3ae6d9121102e222009a68f55f8013e0a251f"
},
"downloads": -1,
"filename": "dexplot-0.0.9-py3-none-any.whl",
"has_sig": false,
"md5_digest": "d15460467d1147919ea0438f7b34c4bc",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 36112,
"upload_time": "2018-10-07T20:46:53",
"url": "https://files.pythonhosted.org/packages/5b/af/555b6189101197f4b2eb3319c96b98aa4e94c1b4bfb22953324f81ced326/dexplot-0.0.9-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "0feb5bcf28b98a4f43d1de1aee5c32c6",
"sha256": "1e6af6a6e139a57bb7cf9b7f1ddac3ef42e8b0ed0c223edf67f65a90a9d10f78"
},
"downloads": -1,
"filename": "dexplot-0.0.9.tar.gz",
"has_sig": false,
"md5_digest": "0feb5bcf28b98a4f43d1de1aee5c32c6",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 29323,
"upload_time": "2018-10-07T20:46:54",
"url": "https://files.pythonhosted.org/packages/58/e6/c002865394758a1c79b3879dc04dd7ec78b8dd5f210a752fc36b9c52055d/dexplot-0.0.9.tar.gz"
}
]
}