Comments (5)
Thanks for the feedback. As for implementing this, I estimate it would be a significant re-write or addition: make vertical plots natively, then update compute_features_levels
with an option to compute horizontal levels, which uses label width as level height -- and conversely use the constant text height for determining collisions. Alternatively, there could be a constant level height, but that likely leads to label overlaps (collisions).
Another option may be flipping the image as mentioned above, but I don't know how well that would work.
from dnafeaturesviewer.
Hi, not out of the box I'm afraid. If it is a one-off, then the fastest way is to save as SVG:
ax.figure.savefig("from_genbank.svg")
Then open in Inkscape or another vector editor, then select each label and rotate 90 degrees (Object >> Transform >> Rotate >> Apply to each object separately >> Apply).
The algorithm in DNA Features Viewer finds the minimum number of levels that allows plotting the labels without overlap, and this works well and simple when the height of the levels, that is, the height of the letters, are the same. If the rotated labels were implemented, then you would get very wide plots, or overlaps as in the example below.
Was something like this below your intended outcome?
from dnafeaturesviewer.
In theory it is also possible to ask matplotlib to flip an ax by 90deg (all features and texts will appear vertically) but it is not straightforward. If that would work for you, see this stackoverflow answer as a starting point.
from dnafeaturesviewer.
I'll look into that, thanks. Yeah I was hoping there would be something that could be baked in to the plot automatically, so if I'm making a multi-axis plot, it's easy to scale everything. I basically wanted to show a heatmap depicting SNPs by patient and have a genome track to visualy depict the position. If I can't get the rotate axis trick to work, I'll try saving as an image or making the figure work horizontally.
from dnafeaturesviewer.
I would also be interested in this.
I am currently trying to visualise a 350kb segment with ~50 elements of interest and the labels start to stack up really high.
I believe this could be circumvented using a vertical plot
from dnafeaturesviewer.
Related Issues (20)
- Cannot apply sequence translation on plot_on_multiple_lines or plot_on_multiple_pages HOT 2
- BiopythonTranslator: SeqFeatures with location_operator='join' get wrong position
- Labels overlap whan sharing axis HOT 2
- Feature request: x_lim best-fit HOT 6
- Enhanced Bokeh support for multiple plots HOT 2
- Linking exon annotations with intron lines, and other things. HOT 5
- Add an example which plots sequence features not starting from 0 HOT 5
- truncated scaffolds from gff files HOT 4
- figure is not coming
- type hints support HOT 1
- Error on BioPython v1.8.0 HOT 9
- type error for global variable related to BioPython update HOT 2
- sequences display from 1 not 0 ? HOT 1
- How to solve the memory problem of batch plotting? HOT 3
- Overlapping arrows in circular DNA HOT 1
- CircularGraphicRecord does not work. Unable to make circular graphs HOT 1
- UndefinedSequenceError with gff files and BioPython 1.81
- Oval or diamond/octagon in addition to arrows for displayed features? HOT 1
- 'Seq' object has no attribute 'defined' HOT 2
- feature location in a join, how to correnctly translate HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from dnafeaturesviewer.