Code Monkey home page Code Monkey logo

Comments (5)

veghp avatar veghp commented on July 21, 2024 1

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.

veghp avatar veghp commented on July 21, 2024

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_genbank svg

from dnafeaturesviewer.

Zulko avatar Zulko commented on July 21, 2024

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.

smk508 avatar smk508 commented on July 21, 2024

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.

Casperjamin avatar Casperjamin commented on July 21, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.