mirror of https://github.com/mingrammer/diagrams
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
91 lines
2.7 KiB
91 lines
2.7 KiB
4 years ago
|
---
|
||
|
id: custom
|
||
|
title: Custom
|
||
|
---
|
||
|
|
||
|
## Custom with local icons
|
||
|
|
||
|
For this example we use the following architecture:
|
||
|
|
||
|
```
|
||
|
.
|
||
|
├── custom_local.py
|
||
|
├── my_resources
|
||
|
│ ├── cc_heart.black.png
|
||
|
│ ├── cc_attribution.png
|
||
|
│ ├──...
|
||
|
```
|
||
|
|
||
|
The content of custom_local.py file:
|
||
|
|
||
|
```python
|
||
|
from diagrams import Diagram, Cluster
|
||
|
from diagrams.custom import Custom
|
||
|
|
||
|
|
||
|
with Diagram("Custom with local icons\n Can be downloaded here: \nhttps://creativecommons.org/about/downloads/", show=False, filename="custom_local", direction="LR"):
|
||
|
cc_heart = Custom("Creative Commons", "./my_resources/cc_heart.black.png")
|
||
|
cc_attribution = Custom("Credit must be given to the creator", "./my_resources/cc_attribution.png")
|
||
|
|
||
|
cc_sa = Custom("Adaptations must be shared\n under the same terms", "./my_resources/cc_sa.png")
|
||
|
cc_nd = Custom("No derivatives or adaptations\n of the work are permitted", "./my_resources/cc_nd.png")
|
||
|
cc_zero = Custom("Public Domain Dedication", "./my_resources/cc_zero.png")
|
||
|
|
||
|
with Cluster("Non Commercial"):
|
||
|
non_commercial = [Custom("Y", "./my_resources/cc_nc-jp.png") - Custom("E", "./my_resources/cc_nc-eu.png") - Custom("S", "./my_resources/cc_nc.png")]
|
||
|
|
||
|
cc_heart >> cc_attribution
|
||
|
cc_heart >> non_commercial
|
||
|
cc_heart >> cc_sa
|
||
|
cc_heart >> cc_nd
|
||
|
cc_heart >> cc_zero
|
||
|
```
|
||
|
|
||
|
It will generate the following diagram:
|
||
|
|
||
|
![custom local](/img/custom_local.png)
|
||
|
|
||
|
|
||
|
## Custom with remote icons
|
||
|
|
||
|
If your icons are hosted and can be accessed when you generate the diagrams, you can
|
||
|
|
||
|
```python
|
||
|
from diagrams import Diagram, Cluster
|
||
|
from diagrams.custom import Custom
|
||
|
from urllib.request import urlretrieve
|
||
|
|
||
|
with Diagram("Custom with remote icons", show=False, filename="custom_remote", direction="LR"):
|
||
|
|
||
|
# download the icon image file
|
||
|
diagrams_url = "https://github.com/mingrammer/diagrams/raw/master/assets/img/diagrams.png"
|
||
|
diagrams_icon = "diagrams.png"
|
||
|
urlretrieve(diagrams_url, diagrams_icon)
|
||
|
|
||
|
diagrams = Custom("Diagrams", diagrams_icon)
|
||
|
|
||
|
with Cluster("Some Providers"):
|
||
|
|
||
|
openstack_url = "https://github.com/mingrammer/diagrams/raw/master/resources/openstack/openstack.png"
|
||
|
openstack_icon = "openstack.png"
|
||
|
urlretrieve(openstack_url, openstack_icon)
|
||
|
|
||
|
openstack = Custom("OpenStack", openstack_icon)
|
||
|
|
||
|
elastic_url = "https://github.com/mingrammer/diagrams/raw/master/resources/elastic/saas/elastic.png"
|
||
|
elastic_icon = "elastic.png"
|
||
|
urlretrieve(elastic_url, elastic_icon)
|
||
|
|
||
|
elastic = Custom("Elastic", elastic_icon)
|
||
|
|
||
|
diagrams >> openstack
|
||
|
diagrams >> elastic
|
||
|
```
|
||
|
|
||
|
It will generate the following diagram:
|
||
|
|
||
|
![custom local](/img/custom_remote.png)
|
||
|
|
||
|
|
||
|
Another example can be found [Here](https://diagrams.mingrammer.com/docs/getting-started/examples#rabbitmq-consumers-with-custom-nodes).
|