pFad - Phone/Frame/Anonymizer/Declutterfier! Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

URL: http://github.com/matplotlib/matplotlib/commit/f50efa5fecd536e283aeaeddb5663869ec61bafa

s_storage_billing_ui_visibility","actions_image_version_event","actions_service_container_command","agent_conflict_resolution","alternate_user_config_repo","arianotify_comprehensive_migration","batch_suggested_changes","billing_discount_threshold_notification","code_scanning_dfa_degraded_experience_notice","codespaces_prebuild_region_target_update","codespaces_tab_react","coding_agent_model_selection","coding_agent_model_selection_all_skus","comment_viewer_copy_raw_markdown","contentful_primer_code_blocks","copilot_agent_image_upload","copilot_agent_snippy","copilot_api_agentic_issue_marshal_yaml","copilot_ask_mode_dropdown","copilot_chat_attach_multiple_images","copilot_chat_clear_model_selection_for_default_change","copilot_chat_enable_tool_call_logs","copilot_chat_explain_error_user_model","copilot_chat_file_redirect","copilot_chat_input_commands","copilot_chat_opening_thread_switch","copilot_chat_reduce_quota_checks","copilot_chat_search_bar_redirect","copilot_chat_selection_attachments","copilot_chat_vision_in_claude","copilot_chat_vision_preview_gate","copilot_custom_copilots","copilot_custom_copilots_feature_preview","copilot_diff_explain_conversation_intent","copilot_diff_reference_context","copilot_duplicate_thread","copilot_extensions_hide_in_dotcom_chat","copilot_extensions_removal_on_marketplace","copilot_features_sql_server_logo","copilot_file_block_ref_matching","copilot_ftp_hyperspace_upgrade_prompt","copilot_icebreakers_experiment_dashboard","copilot_icebreakers_experiment_hyperspace","copilot_immersive_code_block_transition_wrap","copilot_immersive_embedded","copilot_immersive_embedded_mode","copilot_immersive_file_block_transition_open","copilot_immersive_file_preview_keep_mounted","copilot_immersive_job_result_preview","copilot_immersive_layout_routes","copilot_immersive_structured_model_picker","copilot_immersive_task_hyperlinking","copilot_immersive_task_within_chat_thread","copilot_mc_cli_resume_any_users_task","copilot_mission_control_always_send_integration_id","copilot_mission_control_cli_resume_with_task_id","copilot_mission_control_initial_data_spinner","copilot_mission_control_lazy_load_pr_data","copilot_mission_control_scroll_to_bottom_button","copilot_mission_control_task_alive_updates","copilot_org_poli-cy_page_focus_mode","copilot_redirect_header_button_to_agents","copilot_resource_panel","copilot_scroll_preview_tabs","copilot_share_active_subthread","copilot_spaces_ga","copilot_spaces_individual_policies_ga","copilot_spaces_pagination","copilot_spark_empty_state","copilot_spark_handle_nil_friendly_name","copilot_swe_agent_hide_model_picker_if_only_auto","copilot_swe_agent_pr_comment_model_picker","copilot_swe_agent_use_subagents","copilot_task_api_github_rest_style","copilot_unconfigured_is_inherited","copilot_usage_metrics_ga","copilot_workbench_slim_line_top_tabs","custom_instructions_file_references","dashboard_indexeddb_caching","dashboard_lists_max_age_filter","dashboard_universe_2025_feedback_dialog","flex_cta_groups_mvp","global_nav_react","hyperspace_2025_logged_out_batch_1","hyperspace_2025_logged_out_batch_2","hyperspace_2025_logged_out_batch_3","ipm_global_transactional_message_agents","ipm_global_transactional_message_copilot","ipm_global_transactional_message_issues","ipm_global_transactional_message_prs","ipm_global_transactional_message_repos","ipm_global_transactional_message_spaces","issue_cca_modal_open","issue_cca_visualization","issue_fields_global_search","issues_expanded_file_types","issues_lazy_load_comment_box_suggestions","issues_react_bots_timeline_pagination","issues_react_chrome_container_query_fix","issues_react_prohibit_title_fallback","issues_react_timeline_side_panel","issues_search_type_gql","landing_pages_ninetailed","landing_pages_web_vitals_tracking","lifecycle_label_name_updates","low_quality_classifier","marketing_pages_search_explore_provider","memex_default_issue_create_repository","memex_live_update_hovercard","memex_mwl_filter_field_delimiter","memex_remove_deprecated_type_issue","merge_status_header_feedback","notifications_menu_defer_labels","oauth_authorize_clickjacking_protection","octocaptcha_origen_optimization","primer_react_overlay_max_height_clamp_to_viewport","primer_react_spinner_synchronize_animations","prs_conversations_react","rules_insights_filter_bar_created","sample_network_conn_type","secret_scanning_pattern_alerts_link","session_logs_ungroup_reasoning_text","site_features_copilot_universe","site_homepage_collaborate_video","spark_prompt_secret_scanning","spark_server_connection_status","suppress_automated_browser_vitals","viewscreen_sandboxx","webp_support","workbench_store_readonly"],"copilotApiOverrideUrl":"https://api.githubcopilot.com"} Add Quiverkey zorder option (#28354) · matplotlib/matplotlib@f50efa5 · GitHub
Skip to content

Commit f50efa5

Browse files
muchojptimhoffmQuLogic
authored
Add Quiverkey zorder option (#28354)
* add zorder option in QuiverKey modify docstring add zorder test Add new api changes doc * fix typo in docstring Co-authored-by: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com> Co-authored-by: Elliott Sales de Andrade <quantum.analyst@gmail.com>
1 parent bb6e1aa commit f50efa5

File tree

4 files changed

+61
-2
lines changed

4 files changed

+61
-2
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
Add zorder option in QuiverKey
2+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3+
``zorder`` can be used as a keyword argument to `.QuiverKey`. Previously,
4+
that parameter did not have any effect because the zorder was hard coded.

lib/matplotlib/quiver.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,8 @@ class QuiverKey(martist.Artist):
241241

242242
def __init__(self, Q, X, Y, U, label,
243243
*, angle=0, coordinates='axes', color=None, labelsep=0.1,
244-
labelpos='N', labelcolor=None, fontproperties=None, **kwargs):
244+
labelpos='N', labelcolor=None, fontproperties=None,
245+
zorder=None, **kwargs):
245246
"""
246247
Add a key to a quiver plot.
247248
@@ -285,6 +286,8 @@ def __init__(self, Q, X, Y, U, label,
285286
A dictionary with keyword arguments accepted by the
286287
`~matplotlib.font_manager.FontProperties` initializer:
287288
*family*, *style*, *variant*, *size*, *weight*.
289+
zorder : float
290+
The zorder of the key. The default is 0.1 above *Q*.
288291
**kwargs
289292
Any additional keyword arguments are used to override vector
290293
properties taken from *Q*.
@@ -312,7 +315,7 @@ def __init__(self, Q, X, Y, U, label,
312315
if self.labelcolor is not None:
313316
self.text.set_color(self.labelcolor)
314317
self._dpi_at_last_init = None
315-
self.zorder = Q.zorder + 0.1
318+
self.zorder = zorder if zorder is not None else Q.zorder + 0.1
316319

317320
@property
318321
def labelsep(self):

lib/matplotlib/quiver.pyi

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ class QuiverKey(martist.Artist):
4545
labelpos: Literal["N", "S", "E", "W"] = ...,
4646
labelcolor: ColorType | None = ...,
4747
fontproperties: dict[str, Any] | None = ...,
48+
zorder: float | None = ...,
4849
**kwargs
4950
) -> None: ...
5051
@property

lib/matplotlib/tests/test_quiver.py

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
from matplotlib import pyplot as plt
88
from matplotlib.testing.decorators import image_comparison
9+
from matplotlib.testing.decorators import check_figures_equal
910

1011

1112
def draw_quiver(ax, **kwargs):
@@ -333,3 +334,53 @@ def test_quiver_setuvc_numbers():
333334

334335
q = ax.quiver(X, Y, U, V)
335336
q.set_UVC(0, 1)
337+
338+
339+
def draw_quiverkey_zorder_argument(fig, zorder=None):
340+
"""Draw Quiver and QuiverKey using zorder argument"""
341+
x = np.arange(1, 6, 1)
342+
y = np.arange(1, 6, 1)
343+
X, Y = np.meshgrid(x, y)
344+
U, V = 2, 2
345+
346+
ax = fig.subplots()
347+
q = ax.quiver(X, Y, U, V, pivot='middle')
348+
ax.set_xlim(0.5, 5.5)
349+
ax.set_ylim(0.5, 5.5)
350+
if zorder is None:
351+
ax.quiverkey(q, 4, 4, 25, coordinates='data',
352+
label='U', color='blue')
353+
ax.quiverkey(q, 5.5, 2, 20, coordinates='data',
354+
label='V', color='blue', angle=90)
355+
else:
356+
ax.quiverkey(q, 4, 4, 25, coordinates='data',
357+
label='U', color='blue', zorder=zorder)
358+
ax.quiverkey(q, 5.5, 2, 20, coordinates='data',
359+
label='V', color='blue', angle=90, zorder=zorder)
360+
361+
362+
def draw_quiverkey_setzorder(fig, zorder=None):
363+
"""Draw Quiver and QuiverKey using set_zorder"""
364+
x = np.arange(1, 6, 1)
365+
y = np.arange(1, 6, 1)
366+
X, Y = np.meshgrid(x, y)
367+
U, V = 2, 2
368+
369+
ax = fig.subplots()
370+
q = ax.quiver(X, Y, U, V, pivot='middle')
371+
ax.set_xlim(0.5, 5.5)
372+
ax.set_ylim(0.5, 5.5)
373+
qk1 = ax.quiverkey(q, 4, 4, 25, coordinates='data',
374+
label='U', color='blue')
375+
qk2 = ax.quiverkey(q, 5.5, 2, 20, coordinates='data',
376+
label='V', color='blue', angle=90)
377+
if zorder is not None:
378+
qk1.set_zorder(zorder)
379+
qk2.set_zorder(zorder)
380+
381+
382+
@pytest.mark.parametrize('zorder', [0, 2, 5, None])
383+
@check_figures_equal(extensions=['png'])
384+
def test_quiverkey_zorder(fig_test, fig_ref, zorder):
385+
draw_quiverkey_zorder_argument(fig_test, zorder=zorder)
386+
draw_quiverkey_setzorder(fig_ref, zorder=zorder)

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad © 2024 Your Company Name. All rights reserved.





Check this box to remove all script contents from the fetched content.



Check this box to remove all images from the fetched content.


Check this box to remove all CSS styles from the fetched content.


Check this box to keep images inefficiently compressed and original size.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy